0

AndroidでBaseAdapterを使用して正常に動作するカスタムリストビューのコードは次のとおりです。

public class CustomListAdapter extends BaseAdapter {

    private ArrayList<TaskClass> _listData;
    Context _c;

    public CustomListAdapter(Context context, ArrayList<TaskClass> listData) {

        _listData = listData;
        _c = context;

    }

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

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

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

    public View getView(int position,View convertView,ViewGroup parent) {
        View v = convertView;
        if (v == null) 
        {
            LayoutInflater layoutInflator = (LayoutInflater) _c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = layoutInflator.inflate(R.layout.listview_row, null);
        }
        TextView titleText = (TextView)v.findViewById(R.id.holdTitleText);
        TextView  catText = (TextView)v.findViewById(R.id.holdCatText);
        TextView  descText = (TextView)v.findViewById(R.id.holdDescText);
        TextView  dateText = (TextView)v.findViewById(R.id.holdDateText);
        //CheckBox checkBoxForEachItem = (CheckBox)v.findViewById(R.id.)
        TaskClass taskClassInstance = _listData.get(position);
        titleText.setText(taskClassInstance.getTitle());
        catText.setText(taskClassInstance.getTaskCategory());
        descText.setText(taskClassInstance.getDescription());
        dateText.setText(taskClassInstance.getTaskDate());
        return v;


    }


}

およびカスタムアダプターを使用してリストビューをバインドするアクティビティ内:

listViewInstance.setAdapter(new CustomListAdapter(getApplicationContext(),taskClasslistInstance));

ここで、「taskclasslistinstance」はDBからのデータを含む私の配列リストであり、正常に機能するようになりました。listitemclickの関数を記述して、ユーザーが任意のlistitemをクリックしたときにデータベース からそのlistitemレコードのrowidを取得できるようにする必要があります.rowwidを取得した後、レコードを削除できますリストビューとデータベースから、情報を編集できます

4

3 に答える 3

1

についてはわかりませんが、TaskClass次のようなものが必要になると思います。

listViewInstance.setOnItemClickListener(new OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
        TaskClass taskClass = taskClasslistInstance.get(pos);
        Log.d(TAG, "Clicked on: " + taskClass)
        // Do stuff with taskClass
    }});
于 2013-06-21T11:22:29.123 に答える
0

以下のように getView メソッドで設定することもできます。

public View getView(int position,View convertView,ViewGroup parent) {
        View v = convertView;
        if (v == null) 
        {
            LayoutInflater layoutInflator = (LayoutInflater) _c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = layoutInflator.inflate(R.layout.listview_row, null);
        }
        TextView titleText = (TextView)v.findViewById(R.id.holdTitleText);
        TextView  catText = (TextView)v.findViewById(R.id.holdCatText);
        TextView  descText = (TextView)v.findViewById(R.id.holdDescText);
        TextView  dateText = (TextView)v.findViewById(R.id.holdDateText);
        //CheckBox checkBoxForEachItem = (CheckBox)v.findViewById(R.id.)
        TaskClass taskClassInstance = _listData.get(position);
        titleText.setText(taskClassInstance.getTitle());
        catText.setText(taskClassInstance.getTaskCategory());
        descText.setText(taskClassInstance.getDescription());
        dateText.setText(taskClassInstance.getTaskDate());

       v.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            //Perform an action when this list item is clicked
        }
    });
        return v;


    }
于 2013-06-21T11:25:38.270 に答える
0

ここに私のプロジェクトの小さな例があります:

 list = (ListView) rootView.findViewById(R.id.list);

    adapter = new LazyAdapterAlbum(getActivity(), songs);
    list.setAdapter(adapter);

    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent i = new Intent(getActivity(), AlbumActivity.class);
            Bundle args = new Bundle();
            args.putString(AlbumActivity.ALBUM_NAME, adapter.getItem(position).getName());
            i.putExtras(args);
            startActivity(i);
        }
    });

ListView に onClickListener を設定する必要があります。

于 2013-06-21T11:24:16.613 に答える