0

以下に示すようなリストを表示する API またはオブジェクトを探していました。
リスト

すべてのアイテムにタイトルと小さなテキスト、左/右にチェックボックス、右上/左にテキストを追加するオプション (写真の日付など) があることが重要です。

私はそれを探していましたが、別のリストを除いて、まだ見つけていません...

ありがとう!

4

1 に答える 1

4

カスタム リスト ビューを作成する必要があります。ここにあなたのためのチュートリアルがあります: http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/


編集 コメントでの質問に応えて:

写真の代わりにチェックボックスを追加するにはどうすればよいですか?

ImageView を CheckBox に変更するには、list_row.xml ファイルを編集する必要があります。これは ImageView xml コードです。

<ImageView
   android:id="@+id/list_image"
   android:layout_width="50dip"
   android:layout_height="50dip"
   android:src="@drawable/rihanna"/>

しかし、そこにチェックボックスが必要ですよね。そのブロックを変更して、CheckBox にします。

<CheckBox
   android:id="@+id/cb_list"
   android:layout_width="50dip"
   android:layout_height="50dip"
   android:text="This is a checkbox"/>

次に、LazyAdapter.java ファイルで、「ImageView」を含むビットを削除する必要があります。そうしないと、LazyAdapter が存在しない ImageView に対して処理を実行しようとします。更新されたクラスは次のとおりです (削除されたビットはコメントアウトされています)。

public class LazyAdapter extends BaseAdapter {

    private Activity activity;
    private ArrayList&lt;HashMap&lt;String, String&gt;&gt; data;
    private static LayoutInflater inflater=null;
    //public ImageLoader imageLoader; 

    public LazyAdapter(Activity a, ArrayList&lt;HashMap&lt;String, String&gt;&gt; d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        //imageLoader=new ImageLoader(activity.getApplicationContext());
    }

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

    public Object getItem(int position) {
        return position;
    }

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

    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        if(convertView==null)
            vi = inflater.inflate(R.layout.list_row, null);

        TextView title = (TextView)vi.findViewById(R.id.title); // title
        TextView artist = (TextView)vi.findViewById(R.id.artist); // artist name
        TextView duration = (TextView)vi.findViewById(R.id.duration); // duration
        //ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image); // thumb image

        HashMap&lt;String, String&gt; song = new HashMap&lt;String, String&gt;();
        song = data.get(position);

        // Setting all values in listview
        title.setText(song.get(CustomizedListView.KEY_TITLE));
        artist.setText(song.get(CustomizedListView.KEY_ARTIST));
        duration.setText(song.get(CustomizedListView.KEY_DURATION));
        //imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL), thumb_image);
        return vi;
    }
}

クリックされたときに、リスト内の彼の位置を取得して、アイテムに影響を与えることができるようにするにはどうすればよいですか?

リスト項目がクリックされると、 aOnItemClickListenerがトリガーされます。アクティビティで定義OnItemClickListenerしました。CustomizedListView下の方を見ると、こんな感じです。

// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {

    }
});

リストがクリックされたときにポップアップ (Android では Toast と呼ばれます) を表示したい場合は、次のようにします。

// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {
        Toast.makeText(CustomizedListView.this, "List item " + position + "clicked", Toast.LENGTH_SHORT).show();
    }
});

リストを動的にするにはどうすればよいですか? つまり、ユーザーの選択によって新しいアイテムを追加したり、アイテムを削除したりできます。

項目を追加または削除するには、songsList を変更してからリストを更新する必要があります。songList に新しい項目を追加したいとします。必要な作業は次のとおりです。

    HashMap<String, String> map = new HashMap<String, String>();

    map.put(KEY_ID, "0");
    map.put(KEY_TITLE, "Title here");
    map.put(KEY_ARTIST, "Artist here");
    map.put(KEY_DURATION, "4:08");
    map.put(KEY_THUMB_URL, "http://www.moveoneinc.com/blog/wp-content/uploads/2011/12/Dog-2.jpg");

    // adding HashList to ArrayList
    songsList.add(map);

曲を削除するには、次のようにします。

songsList.remove(3); //Where 3 means the second element in the list

編集したらsongsList、リストを更新して、songList を再度ロードする必要があります。あなたはこれを次のようにします:

list.notifyDataSetChanged();

私はこのコードをテストしていませんが、すべてうまくいくはずです。

于 2012-07-26T15:05:03.853 に答える