Как отобразить список папок и файлов с помощью расширяемого списка просмотра Android? - PullRequest
2 голосов
/ 18 января 2012

Я пытаюсь отобразить список файлов и папок и знаю, как это сделать в режиме просмотра списка.Тем не менее, для лучшего использования пользовательского интерфейса, я бы предпочел сделать это, как показано на рисунке ниже.

enter image description here

Это то, что я изначально делал только с ListView:

У меня есть2 мероприятия.На первом занятии

  1. отображаются 3 папки, которые я создал (работает как системная папка)
  2. , когда я нажимаю на одну из папок, она намеревается2-е действие, показывая файлы, которые находятся только в этой папке.

не только это, во 2-м упражнении

  1. , когда я нажимал на кнопку, просмотр спискаизменится с обычного просмотра списка на просмотр списка типа контрольного списка, чтобы пользователь мог удалить несколько файлов.

, поэтому я надеюсь сделать следующее, следуя изображению, показанному выше ..

  1. на синей подсветке, он покажет 3 папки.
  2. когда я нажму на кнопку со стрелкой, он покажет файлы, соответствующие ему
  3. с включенной кнопкой редактирования, просмотр списка, показывающий транспортные средства (транспортное средство № 1, № 2 и т. Д.) Будетперейдите к контрольному списку, чтобы пользователь мог удалить несколько файлов.

как мне это сделать?как я никогда прежде не «касался» расширяемого списка.

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

создать собственный адаптер ExpandableListView:

public class customListAdapter extends BaseExpandableListAdapter {

    private File folder1;
    private File folder2;

    private String[] groups = {};
    private String[][] children = {};

    public customListAdapter() {
        // Sample data set.  children[i] contains the children (String[]) for groups[i].
        folder1 = new File (Environment.getExternalStorageDirectory(),"/Folder1");
        folder2 = new File (Environment.getExternalStorageDirectory(),"/Folder2");

        String[] fileList1 = folder1.list();
        String[] fileList2 = folder2.list();

        Arrays.sort(fileList1);
        Arrays.sort(fileList2);

        groups = new String[] { "Folder1" , "Folder2" };
        children = new String[][] { fileList1, fileList2 };
    }//constructor


    public Object getChild(int groupPosition, int childPosition) {
        return children[groupPosition][childPosition];
    }

    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    public int getChildrenCount(int groupPosition) {
        return children[groupPosition].length;
    }

    public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
                                View convertView, ViewGroup parent) {

        TextView textView = new TextView(this);
        textView.setBackgroundColor(Color.BLACK);
        textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
        textView.setPadding(100, 5, 0, 5);
        textView.setTextColor(Color.WHITE);
        textView.setTextSize(23);
        textView.setId(1000);

        textView.setText(getChild(groupPosition, childPosition).toString());
        return textView;
    }//getChildView

    public Object getGroup(int groupPosition) {
        return groups[groupPosition];
    }

    public int getGroupCount() {
        return groups.length;
    }

    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
            ViewGroup parent) {
        TextView textView = new TextView(this);
        textView.setBackgroundColor(Color.WHITE);
        textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
        textView.setPadding(100, 0, 0, 0);
        textView.setTextColor(Color.BLACK);
        textView.setTextSize(25);
        textView.setText(getGroup(groupPosition).toString());

        return textView;
    }

    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }

    public boolean hasStableIds() {
        return true;
    }

}//customListAdapter

затем, сослаться на это, используя:

setContentView(R.layout.preferedlayout);
// Set up our adapter
listAdapter = new customListAdapter();

expLV = (ExpandableListView) findViewById(R.id.expList);
expLV.setAdapter(listAdapter);

надеюсь, что это поможет другим людям. =)

0 голосов
/ 18 января 2012

Если я правильно понял ваш вопрос, вы можете установить адаптер в ListView, который будет раздувать какой-то тип макета, который вы хотите.

пример:

listView = (ListView)findViewById(R.id.feedList);
MyAdapter adapter = new MyAdapter(this, items, Color.WHITE);
listView.setAdapter(adapter);

items isArrayList каких-то сущностей

Код адаптера:

public class MyAdapter extends BaseAdapter {
private ArrayList<MyItem> items = null;
private LayoutInflater layoutInflater = null;
MyAdapter(Context context, ArrayList<MyItem> items, int bgColor){
    this.items = items;
    layoutInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = layoutInflater.inflate(R.layout.my_layout, null);
    ImageView imageView = (ImageView) row.findViewById(R.id.image);
    imageView.setImageResource(R.drawable.my_image);
    TextView text = (TextView) row.findViewById(R.id.title);
    text.setText("Hi");
    return row;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...