首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android OnItemClickListener值传递

Android OnItemClickListener值传递
EN

Stack Overflow用户
提问于 2013-12-05 07:33:21
回答 2查看 652关注 0票数 0

我试图传递一个在列表视图中选择的值,但传递的值与所选的值不匹配。怎么了?这是我的完整代码。我得到的值不是所选的值。

代码语言:javascript
复制
ListAdapter adapter = new ArrayAdapter<Dettaglio>(this, R.layout.detlezione, R.id.tv_nomria, dettagli){
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = super.getView(position, convertView, parent);
        final TextView tvId;
        final TextView tvCaa;
        ImageView tvC;
        tvC = (ImageView) row.findViewById(R.id.color_view);
        tvId = (TextView) row.findViewById(R.id.lbl);
        tvCaa = (TextView) row.findViewById(R.id.tv_nome_caa);
        tvCaa.setTypeface(tf);
        Dettaglio d = dettagli.get(position);
        tvId.setText(d.id+"");
        tvCaa.setText(d.caa+"");
        tvCaa.setTextColor(d.color);
        tvC.setBackgroundColor(d.color);
        lista.setOnItemClickListener(new OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
                Intent invia_a_movimenti = new Intent(Sce.this, Movi.class);
                Bundle extras = new Bundle();
                extras.putString("caa", tvCaa.getText().toString());
                extras.putInt("co", tvCaa.getCurrentTextColor());
                invia_a_movimenti.putExtras(extras);
                startActivity(invia_a_movimenti);
            }
        });
        return row;
    };
};
lista.setAdapter(adapter);

-UPDATE- ok,但是我的onResume ()没有返回结果,为什么?

代码语言:javascript
复制
@Override
protected void onResume(){

    Bundle extras = getIntent().getExtras(); 

    c_scelta.setText(i.getStringExtra("caa"));
    int color;
    color = (i.getIntExtra("co", 0));
    c_scelta.setTextColor(colore_ricevuto);

     super.onResume();

}
EN

回答 2

Stack Overflow用户

发布于 2013-12-05 07:46:03

我不确定(因为代码不够清楚),但您应该能够这样做:

代码语言:javascript
复制
extras.putString("caa", ((TextView)view).getText().toString());
extras.putInt("co", ((TextView)view).getCurrentTextColor());

选择的项通过OnItemClickListener的方法签名传递。因此,单击的项是变量view。使用view获取有关已单击项目的信息。此外,您还可以使用positionid变量。

编辑:

您不应为每行分配onItemClickListener。相反,您只需对其赋值一次,因此将该赋值放在getView方法之外。下面的代码应该可以工作:

代码语言:javascript
复制
ListAdapter adapter = new ArrayAdapter<Dettaglio>(this, R.layout.detlezione, R.id.tv_nomria, dettagli) {
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = super.getView(position, convertView, parent);
        TextView tvId = (TextView) row.findViewById(R.id.lbl);
        TextView tvCaa = (TextView) row.findViewById(R.id.tv_nome_caa);
        ImageView tvC = (ImageView) row.findViewById(R.id.color_view);
        tvCaa.setTypeface(tf);
        Dettaglio d = dettagli.get(position);
        tvId.setText(d.id + "");
        tvCaa.setText(d.caa + "");
        tvCaa.setTextColor(d.color);
        tvC.setBackgroundColor(d.color);
        return row;
    };
};
lista.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Intent invia_a_movimenti = new Intent(Sce.this, Movi.class);
        Bundle extras = new Bundle();
        TextView tvCaa = (TextView) view.findViewById(R.id.tv_nome_caa);
        extras.putString("caa", tvCaa.getText().toString());
        extras.putInt("co", tvCaa.getCurrentTextColor());
        invia_a_movimenti.putExtras(extras);
        startActivity(invia_a_movimenti);
    }
});
lista.setAdapter(adapter);

尽管如此,我还是建议你使用ViewHolder。在谷歌上搜索并学好它。

票数 0
EN

Stack Overflow用户

发布于 2013-12-05 07:51:11

我想要理解你的想法。您尝试访问列表视图中的选定文本视图并获取其属性,然后在回调时的onSelecteditem方法上,它会提供一些参数,例如包含文本视图的列表中的选定视图以及选定视图的位置和id。现在您需要的是在选定项中获取文本视图,因此您需要

代码语言:javascript
复制
TextView selectedTextView = (TextView)view.findViewById(R.id.textviewId);
extras.putString("caa",selectdTextView.getText().toString());

现在,您可以访问文本视图中的任何数据

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20388376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档