【问题标题】:How to add onClickListner to ArrayAdapter on Android Studio [duplicate]如何在 Android Studio 中将 onClickListener 添加到 ArrayAdapter [重复]
【发布时间】:2020-01-09 01:08:48
【问题描述】:

我正在尝试将意图和 onClickListner 放在我的代码中,但我找不到任何解决方案。

在 MainActivity.java 中

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
final ArrayList<Details> detail = new ArrayList<>();

        detail.add(new Details(R.string.list_1, price_1,getResources().getColor(R.color.color_category_1)));
       //more detail           
        DetailsAdapter adapter = new DetailsAdapter(this, detail);
        ListView listView = (ListView) findViewById(R.id.list);
        listView.setAdapter(adapter);
}

在 DetailAdapter.java 中

public class DetailsAdapter extends ArrayAdapter<Details> {

    private DetailsAdapter(Activity context, ArrayList<Details> detail) {
        super(context, 0, detail);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View listItemView = convertView;
        if (listItemView == null) {
            listItemView = LayoutInflater.from(getContext()).inflate(R.layout.category_list_main, parent, false);
        }

        Details currentDetails = getItem(position);

        TextView detailsTextView = (TextView) listItemView.findViewById(R.id.detailsName);
        detailsTextView.setText(currentDetails.getDetailName());

        //other code for displaying the text
        colourCategory.setBackgroundColor(currentDetails.getColorCategory());
        return listItemView;
    }
}

【问题讨论】:

标签: java android


【解决方案1】:

您可以像这样定义您的listView.setOnItemClickListener 以转到不同的活动以单击不同的元素。

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

    final ArrayList<Details> detail = new ArrayList<>();

    detail.add(new Details(R.string.list_1, price_1,getResources().getColor(R.color.color_category_1)));

    // More detail           
    DetailsAdapter adapter = new DetailsAdapter(this, detail);
    ListView listView = (ListView) findViewById(R.id.list);
    listView.setAdapter(adapter);

    // Click event
    listView.setOnItemClickListener(new setOnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            // Do what you need...
        }
    });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多