簡體   English   中英

將包含 textview 值的文件 .txt (ArrayList) 中的所有項目設置為列表視圖 [Android Java]

[英]Set all items to a listview from a file .txt (ArrayList) what contains textview value [Android Java]

我想要一個按鈕onClick generate1()顯示我的Arraylist(.txt ) 中的所有項目包含Edittext值。

我是android java編程的初學者。

這是我的onClick方法 generate1():

    public void generate1(View view) throws IOException {

        ArrayAdapter<String> adapter;
        ArrayList<String> ls = new ArrayList<>();
        EditText editText = (EditText) findViewById(R.id.editText);

        BufferedReader br = null;

        br = new BufferedReader(new InputStreamReader(getAssets().open("themen.txt")));
        String word;
        while ((word = br.readLine()) != null) {
            ls.add(word);
        }
        br.close();
        ListView listView = (ListView) findViewById(R.id.listView);
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,ls);
        listView.setAdapter(adapter);

        for (String e : ls){
           if (e.toLowerCase().contains(editText.getText().toString())){
              //???? some toDO ???? (if i do here System.out.println(e); its work, but i want the Items to a listview!! 
           }
        }
    }

您應該創建兩個全局 ArrayList 。首先,您為所有結果命名為“ls”。其次,我為過濾結果調用“lsFiltered”; 然后...

改變這個

for (String e : ls){
       if (e.toLowerCase().contains(editText.getText().toString())){
          //???? some toDO ???? (if i do here System.out.println(e); its work, but i want the Items to a listview!! 
       }
    }

對此

for (int i = 0; i <ls.size() ; i++) {
        if (e.toLowerCase().contains(editText.getText().toString())){
            lsFiltered.add(ls.get(i));
        }
}
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,lsFiltered);
listView.setAdapter(adapter);

首先創建一個像這樣的適配器類:

public class DemoAdapter extends BaseAdapter {
    private ArrayList<String> data;
    private Context context;
    private LayoutInflater inflater;

    public DemoAdapter(ArrayList<String> data, Context context) {
        this.data = data;
        this.context = context;
    }

    @Override
    public int getCount() {
        return data.size();
    }

    @Override
    public Object getItem(int i) {
        return data.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

        MyViewHolder myViewHolder;

        if (view==null){
            view = inflater.inflate(android.R.layout.simple_list_item_1,viewGroup,false);
            myViewHolder = new MyViewHolder(view);
            view.setTag(myViewHolder);
        } else {
            myViewHolder = (MyViewHolder) view.getTag();
        }

        myViewHolder.myTv.setText(data.get(i));

        return view;
    }


    class MyViewHolder{
        TextView myTv;

        public MyViewHolder(View item){
            myTv = item.findViewById(android.R.id.text1);
        }
    }
}

然后在你的generate1方法中像這樣初始化它:

DemoAdapter adapter = DemoAdapter(this,ls);
listView.setAdapter(adapter);

public void generate1(View view) 拋出 IOException {

    ArrayAdapter<String> adapter2;
    ArrayList<String> ls = new ArrayList<>();
    ArrayList<String> ls2 = new ArrayList<>();

    EditText editText = (EditText) findViewById(R.id.editText);

    BufferedReader br = null;

        br = new BufferedReader(new InputStreamReader(getAssets().open("themen.txt")));
        String word;
        while ((word = br.readLine()) != null) {
            ls.add(word);
        }
        br.close();
         ListView listView = (ListView) findViewById(R.id.listView);

    for (String e : ls) {

           int i = 0;
            while (i<ls.size()){

               if (e.toLowerCase().contains(editText.getText().toString())) {

                    ls2.add(i,e);
                }
                i++;
            }
        }

        adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, ls2);
        listView.setAdapter(adapter2);
    }

}

我找到了另一種方法並且它有效:D,但是列表視圖中的結果每次都被查看了 10 次!!?? 我忘記了什么??

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM