Многоуровневый список просмотра Android - PullRequest
0 голосов
/ 03 марта 2019

пожалуйста, мне действительно нужна помощь в этом, мне нужно сделать что-то подобное в моем приложении

пример веб-сайта

я пытался использовать многоуровневый просмотр списка, но основные моментыlike (1,2,3 ..) происходит из таблицы, а подпункты like (1.1,1.2 ...) - из другой таблицы

для основных точек класса строки

public class meeting_folders {

private String id;
private String folder;
private String meeting;
private String order;
private String active;

public meeting_folders(String id, String folder, String meeting, String order, String active) {
    this.id = id;
    this.folder = folder;
    this.meeting = meeting;
    this.order = order;
    this.active = active;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getFolder() {
    return folder;
}

public void setFolder(String folder) {
    this.folder = folder;
}

public String getMeeting() {
    return meeting;
}

public void setMeeting(String meeting) {
    this.meeting = meeting;
}

public String getOrder() {
    return order;
}

public void setOrder(String order) {
    this.order = order;
}

public String getActive() {
    return active;
}

public void setActive(String active) {
    this.active = active;
}

}

и адаптер выглядит так:

public class Meetings_folders_adapter extends ArrayAdapter<meeting_folders> {

public ArrayList<meeting_folders> MainList;

public ArrayList<meeting_folders> MeetingListTemp;

Typeface font;

Date currentTime = Calendar.getInstance().getTime();

ArrayList<meeting_folders> MeetingList = new ArrayList<meeting_folders>();

public Meetings_folders_adapter.MeetingDataFilter MeetingDataFilter ;

public Meetings_folders_adapter(Context context, int id, ArrayList<meeting_folders> meetingArrayList) {

    super(context, id, meetingArrayList);

    this.MeetingListTemp = new ArrayList<meeting_folders>();

    this.MeetingListTemp.addAll(meetingArrayList);

    this.MainList = new ArrayList<meeting_folders>();

    this.MainList.addAll(meetingArrayList);

    font = Typeface.createFromAsset(context.getAssets(), "fonts/Droid.Arabic.Kufi_DownloadSoftware.iR_.ttf");


}

@Override
public Filter getFilter() {

    if (MeetingDataFilter == null){

        MeetingDataFilter  = new Meetings_folders_adapter.MeetingDataFilter();
    }
    return MeetingDataFilter;
}


public class ViewHolder {

    TextView Code;


}

@SuppressLint("InflateParams") @Override
public View getView(int position, View convertView, ViewGroup parent) {
    Meetings_folders_adapter.ViewHolder holder = null;

    if (convertView == null) {

        LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        convertView = vi.inflate(R.layout.meeting_folders_row, null);

        holder = new Meetings_folders_adapter.ViewHolder();

        holder.Code = (TextView) convertView.findViewById(R.id.meeting_title_name);


        convertView.setTag(holder);
        convertView.setBackgroundColor(Color.WHITE);

    } else {
        holder = (Meetings_folders_adapter.ViewHolder) convertView.getTag();
    }

    meeting_folders mob = MeetingListTemp.get(position);

    holder.Code.setText(mob.getFolder());
    holder.Code.setTypeface(font);

    //holder.image.setImageBitmap(Bitmap.createBitmap(bitmaps[Integer.parseInt(CompanyListTemp.get(position).getID())-1]));
    //  holder.image.setImageBitmap(Bitmap.createBitmap(bitmaps[position]));


    return convertView;

}

@SuppressLint("DefaultLocale") private class MeetingDataFilter extends Filter
{

    @Override
    protected FilterResults performFiltering(CharSequence charSequence) {

        charSequence = charSequence.toString().toLowerCase();

        FilterResults filterResults = new FilterResults();

        if(charSequence != null && charSequence.toString().length() > 0)
        {
            ArrayList<meeting_folders> arrayList1 = new ArrayList<meeting_folders>();

            for(int i = 0, l = MainList.size(); i < l; i++)
            {
                meeting_folders mob = MainList.get(i);

                if(mob.toString().toLowerCase().contains(charSequence))

                    arrayList1.add(mob);
            }
            filterResults.count = arrayList1.size();

            filterResults.values = arrayList1;
        }
        else
        {
            synchronized(this)
            {
                filterResults.values = MainList;

                filterResults.count = MainList.size();
            }
        }
        return filterResults;
    }

    @SuppressWarnings("unchecked")
    @Override
    protected void publishResults(CharSequence charSequence, FilterResults filterResults) {

        MeetingListTemp = (ArrayList<meeting_folders>)filterResults.values;

        notifyDataSetChanged();

        clear();

        for(int i = 0, l = MeetingListTemp.size(); i < l; i++)
            add(MeetingListTemp.get(i));

        notifyDataSetInvalidated();
    }
}
public static String dateFormater(String dateFromJSON, String expectedFormat, String oldFormat) {
    SimpleDateFormat dateFormat = new SimpleDateFormat(oldFormat);
    Date date = null;
    String convertedDate = null;
    try {
        date = dateFormat.parse(dateFromJSON);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(expectedFormat);
        convertedDate = simpleDateFormat.format(date);
    } catch (Exception e) {
        e.printStackTrace();
    }

    return convertedDate;
}

}

и действие выглядит так:

 private class ParseJSonDataClassTiltles extends AsyncTask<Void, Void, Void> {
    public Context context;
    String FinalJSonResult;

    public ParseJSonDataClassTiltles(Context context) {

        this.context = context;
    }

    @Override
    protected void onPreExecute() {

        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... arg0) {

        HttpServiceClass httpServiceClass = new HttpServiceClass( URL_FOR_MEETING_FOLDER.concat(iddd));

        try {
            httpServiceClass.ExecutePostRequest();

            if (httpServiceClass.getResponseCode() == 200) {

                FinalJSonResult = httpServiceClass.getResponse();

                if (FinalJSonResult != null) {

                    JSONArray jsonArray = null;
                    try {

                        jsonArray = new JSONArray();

                        JSONObject jsonObject= new JSONObject(FinalJSonResult);

                        jsonArray= jsonObject.getJSONArray("meeting_folder");

                        for (int i = 0; i < jsonArray.length(); i++) {

                            meetingList_folders.add(new meeting_folders(jsonArray.getJSONObject(i).getString("id"),
                                    jsonArray.getJSONObject(i).getString("folder"),
                                    jsonArray.getJSONObject(i).getString("meeting"),
                                    jsonArray.getJSONObject(i).getString("order"),
                                    jsonArray.getJSONObject(i).getString("active")));
                        }
                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            } else {

                Toast.makeText(context, httpServiceClass.getErrorMessage(), Toast.LENGTH_SHORT).show();
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result)

    {
        adapter2 = new Meetings_folders_adapter(meeting_details.this, R.layout.meeting_folders_row, meetingList_folders);
        listview3.setAdapter(adapter2);

    }
}

нет проблемв приведенных выше кодах и вывод простой listView.

теперь мне нужно под каждым элементом списка выполнить таблицу, которая содержит под-данные ???.

если у вас есть другие идеи, пожалуйста, не стесняйтесьподелиться

большое спасибо ....

...