【发布时间】:2017-09-11 16:14:04
【问题描述】:
我有一个 ListView,在每个列表视图中我都有一个按钮和一个 TextView。单击按钮时,我想增加 TextView 中显示的 te 值。我可以增加 TextView 中的值,但问题是该值在 TextView 的下一行中从它在前一个 TextView 中的位置递增。
但我想从 1 开始每一行。我该怎么做?
这是我的代码
MainActivity.java
public class MainActivity extends AppCompatActivity {
ListView lv;
TextView t;
int q=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv= (ListView) findViewById(R.id.list);
lv.setAdapter(new MyAd(this));
}
public void hand(View v)
{
final RelativeLayout rl= (RelativeLayout) v.getParent();
Button b= (Button) rl.getChildAt(2);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
t= (TextView) rl.getChildAt(1);
quantity();
}
});
}
public void quantity()
{
q=q+1;
t.setText(""+q);
}
}
编辑 1:
我的问题在某种程度上得到了解决。我可以为每个按钮单击单独的行单独增加值,但该值不会反映在文本视图中。如何在文本视图中体现出来?
我的代码:
MainActivity.java
public class MainActivity extends AppCompatActivity implements MyAd.customButtonListener {
ListView lv;
int q=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv= (ListView) findViewById(R.id.list);
MyAd ma=new MyAd(this);
ma.setCustomButtonListner(this);
lv.setAdapter(ma);
}
@Override
public void onButtonClickListner(int position,TextView t) {
q=q+1;
t.setText(""+q);
}
}
MyAd.java
class MyAd extends BaseAdapter {
int q=0,a[];
List<ListItem> li=new ArrayList<>();
Context c;
MyViewHolder mvh;
customButtonListener customListner;
MyAd(Context c)
{
this.c=c;
Resources res=c.getResources();
String title[]=res.getStringArray(R.array.title);
a=new int[title.length];
for(int i=0;i<title.length;i++)
{
li.add(new ListItem(title[i]));
}
}
public interface customButtonListener
{
void onButtonClickListner(int position, TextView t);
}
public void setCustomButtonListner(customButtonListener listener)
{
this.customListner = listener;
}
@Override
public int getCount() {
return li.size();
}
@Override
public Object getItem(int i) {
return i;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(final int position, View view, ViewGroup parent) {
View row=view;
if(row==null) {
LayoutInflater inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.list_item, parent, false);
mvh=new MyViewHolder();
mvh.txt=row.findViewById(R.id.txt);
mvh.quan=row.findViewById(R.id.quan);
mvh.bt=row.findViewById(R.id.button);
row.setTag(mvh);
}
else
{
mvh= (MyViewHolder) row.getTag();
}
ListItem sr=li.get(position);
//String s=sr.title;
mvh.txt.setText(sr.title);
mvh.bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
q=a[position];
mvh.quan.setText(String.valueOf(q++));
a[position]=q;
System.out.println("position:"+position+"-"+q);
notifyDataSetChanged(); }
});
return row;
}
class MyViewHolder
{
TextView txt,quan;
Button bt;
}
}
ListItem.java
public class ListItem {
String title;
ListItem(String title)
{
this.title=title;
}
}
【问题讨论】:
-
您需要使用 POJO 类来维护您的特定产品数量。
-
编辑 1:我的问题在一定程度上解决了
标签: android listview buttonclick