在列表视图内部按钮上自动更改文本视图值单击

时间:2017-07-01 05:30:36

标签: android listview

listView有两个textView和一个buttononClick button我要自动更改textView的值。我有arrayList只存储了其中一个textView值,而不是另一个textView的存储值。我获得了按钮点击的位置,但不知道如何自动更改textView的值。请帮我解决这个问题。我看到了很多其他的答案,但无法找到解决方案。

textview1 | button | textview2               |               *

button1 | button2

这是格式。 onclick的{​​{1}},它会显示另外两个按钮buttonbutton1。如果我选择button2,则会自动将button1值更改为2,并将该行的button值更改为20。如果我选​​择textview2,则会更改button2 }值为5,button值为50.

2 个答案:

答案 0 :(得分:0)

  

点击按钮,它会再显示两个按钮button1和button2

要使两个按钮可见,您可以执行此操作

  • 单击按钮时,使两个按钮可见

    button.setOnClickListener(new OnClickListener(){
         public void onClick(View v) {
          button1.setVisibility(View.VISIBLE);
          button2.setVisibility(View.VISIBLE);
         }
     });
    
  

如果我选择button1,那么它会将按钮值更改为2

  • 点击按钮1时

    button1.setOnClickListener(new OnClickListener(){
         public void onClick(View v) {
          button.setText("2");
         }
     });
    

答案 1 :(得分:0)

尝试这种方式:

制作一个模型(自定义)java类,如 DataModel.java : -

public class DataModel {
String tv1Value, tv2Value, btnValue;
boolean btnsVisibility;

public String getTv1Value() {
    return tv1Value;
}

public void setTv1Value(String tv1Value) {
    this.tv1Value = tv1Value;
}

public String getTv2Value() {
    return tv2Value;
}

public void setTv2Value(String tv2Value) {
    this.tv2Value = tv2Value;
}

public String getBtnValue() {
    return btnValue;
}

public void setBtnValue(String btnValue) {
    this.btnValue = btnValue;
}

public boolean isBtnsVisibility() {
    return btnsVisibility;
}

public void setBtnsVisibility(boolean btnsVisibility) {
    this.btnsVisibility = btnsVisibility;
}
}

然后在适配器中生成如下代码: -

1)首先获取定义ArrayList<DataModel> datamodels;变量并在构造函数中获取该数组列表值。

2)在适配器的getView()中添加以下编码: -

<强>更新

    holder.button.setTag(position);
    holder.button1.setTag(position);
    holder.button2.setTag(position);

    DataModel dataModel = datamodels.get(position);
    holder.button.setText(dataModel.getBtnValue());
    holder.textview2.setText(dataModel.getTv2Value());
    if(dataModel.isBtnsVisibility()) {
        holder.button1.setVisibility(View.VISIBLE);
        holder.button2.setVisibility(View.VISIBLE);
    }
    else {
        holder.button1.setVisibility(View.GONE);
        holder.button2.setVisibility(View.GONE);
    }
    holder.button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int pos = (int) v.getTag();
            DataModel singleDataModel = datamodels.get(pos);
            singleDataModel.setBtnsVisibility(true);
            datamodels.set(pos,singleDataModel);
            notifyDataSetChanged();
        }
    });
    holder.button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int pos = (int) v.getTag();
            DataModel singleDataModel = datamodels.get(pos);
            singleDataModel.setBtnValue("2");
            singleDataModel.setTv2Value("20");
            datamodels.set(pos,singleDataModel);
            notifyDataSetChanged();
        }
    });
    holder.button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int pos = (int) v.getTag();
            DataModel singleDataModel = datamodels.get(pos);
            singleDataModel.setBtnValue("5");
            singleDataModel.setTv2Value("50");
            datamodels.set(pos,singleDataModel);
            notifyDataSetChanged();
        }
    });