0

私のリストでは、データは次のように表示されます。

test 1
test 2
test 3

しかし、私は彼らに次のように見せたいのです。

1) test 1
2) test 2
3) test 3

どうやってやるの。助けてください。これは私がこれまでに行ったコードです。

public class AppointmentList extends Activity{

    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.select_to_delete);

        String[] myStringArray = new String[] { "test 1", "test 2", "test 3"};

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
                android.R.layout.simple_list_item_1, myStringArray);

        ListView listView = (ListView) findViewById(R.id.listView1);
        listView.setAdapter(adapter);
    }

}
4

4 に答える 4

5

独自のカスタム アダプタ クラスを作成し、そのメソッドを実装する必要があります。. .

カスタム アダプタ クラスの全体の例を次に示します。

 private class Adapter extends BaseAdapter {
            private ArrayList<String> array;
            private Context ctx;

            public Adapter(Context ctx) {
                this.ctx = ctx;
                array = new ArrayList<String>();
            }

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

            @Override
            public Object getItem(int position) {
                return this.array.get(position);
            }

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

            /**
             * add a String Item in a List
             * 
             * @param item
             */
            public void addItem(String item) {
                this.array.add(item);
                this.notifyDataSetChanged();
            }

            /**
             * Delete an Item from a List
             * 
             * @param position
             */
            public void deleteItem(int position) {
                this.array.remove(position);
                this.notifyDataSetChanged();
            }

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                View newView;

                if (convertView == null) {
                    newView = View.inflate(ctx, R.layout.item_layout, null);
                } else {
                    newView = convertView;
                }

                String txt = (String) this.getItem(position);

//   Here is what you're looking for:
                ((TextView) newView.findViewById(R.id.item_numb)).setText(""
                        + (position + 1) + ". ");
//   End;
                ((TextView) newView.findViewById(R.id.item_text)).setText(txt);

                return newView;
            }

        }

その後、次のように Adapter を使用できます。

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_to_do_list);

        ListView ls = (ListView) findViewById(R.id.listView);
        Adapter adapter = new Adapter(this);
        ls.setAdapter(adapter);
    }
于 2013-04-12T14:05:56.823 に答える
2

ArrayAdapterオブジェクトから必要な方法でデータを入力するには、カスタムを作成する必要がありListViewます。

この手法の利点は、メモリの消費を抑えるためにViews内部をリサイクルするビュー リサイクル メカニズムを利用できることです。ListView

要するに、次のことを行う必要があります。

1.単一行のデータを表すオブジェクトを作成します。

2.ArrayListこれらのオブジェクトの を作成します。

3. ListView を含むレイアウトを作成するか、コードを使用してメイン レイアウトに ListView を追加します。

4. 1 行のレイアウトを作成します。

5.ViewHolderの観点からデータ行の視覚的側面を表す を作成しますViews

6.ArrayAdapter必要に応じて行を設定するカスタムを作成します。その中で、getViewメソッドをオーバーライドし、正しい行に対してposition受け取ったパラメーターを使用して行Viewを示しますindex

7.最後に、これArrayAdapterListViewinに割り当てますonCreate

これを実装する方法については、私が書いた次のブログ投稿を読むことで理解できます。

カスタム ArrayAdapter を作成する

于 2013-04-12T14:05:59.553 に答える
0

リストにhtmlコンテンツを表示することができます

例えば ​​:

Html.fromHtml("<ol><li> test 1</li></ol>") 

HTML ドキュメント

于 2013-04-12T13:59:15.210 に答える