2

これは現在の出力です

ListViewインデックスのようなものを開発しようとしています。私の場合、リスト、チャプター、サブチャプター、子の 3 つのレベルがあります。3 つのレベルを正常に実装しました。

3つのリストすべてで3つの異なる色を変更したい。

試した:

  1. 3レベルの消耗品リストビューを試しましたが、達成できません。

  2. だから私はListviewを単一の配列でより動的に試しました..

getviewメソッドでlistviewのリストカラーを変更したい

これは、サブチャプターをリストに追加するための私の getview() です:

            for (int i = listsubchapt.size() - 1; i >= 0; i--) {

                Mainarray.add(pos + 1, listsubchapt.get(i));
                Mainarrayid.add(pos + 1, listsubchaptid.get(i));

                //System.out.println("mainarraywithsub==++ " + Mainarray);
                ArrayAdapter<String> adapter = (new ArrayAdapter<String>(
                        IndexChapter.this, R.layout.singlerow,
                        R.id.textView1, Mainarray){@Override
                        public View getView(int position,
                                View convertView, ViewGroup parent) {

                            LayoutInflater mInflater = (LayoutInflater)getSystemService(
                                    Context.LAYOUT_INFLATER_SERVICE);
                         convertView = mInflater.inflate(R.layout.singlerow, null);

                         for(int i=0;i<Mainarray.size();i++){

                            String sample=Mainarray.get(i);
                            String[] items = sample.split(":"); 
                            if (items.length == 1) {
                                TextView txt = ((TextView) convertView.findViewById(R.id.textView1));
                                txt.setBackgroundColor(Color.CYAN);

                            }else if(items.length == 2){
                                TextView txt = ((TextView) convertView.findViewById(R.id.textView1));
                                txt.setBackgroundColor(Color.BLUE);
                            }else if(items.length == 3){
                                TextView txt = ((TextView) convertView.findViewById(R.id.textView1));
                                txt.setBackgroundColor(Color.GRAY);
                            }else{
                                TextView txt = ((TextView) convertView.findViewById(R.id.textView1));
                                txt.setBackgroundColor(Color.CYAN);
                            }
                         }
                            return super.getView(position, convertView, parent);
                        }});


                clientdetailslist.setAdapter(adapter);
                clientdetailslist.setSelection(pos-1);
                adapter.notifyDataSetChanged();

            } 

編集 :

length=1 ブロックに移動し、すべての値をシアン色に変更します。

4

2 に答える 2

0

super.getView(...) の代わりに convertView を返します。いくつかの例を次に示します: https://github.com/codepath/android_guides/wiki/Using-an-ArrayAdapter-with-ListView

于 2014-12-16T08:52:43.480 に答える