gpt4 book ai didi

android listview在listitem点击事件中重复一些项目

转载 作者:太空宇宙 更新时间:2023-11-03 11:26:10 25 4
gpt4 key购买 nike

这是我的应用程序截图,

这是 1 个列表项(包含 1 个 imageview 和 3 个 imagebutton 和 id)。我的 ListView 中有 50 个 ListItem,就像这样。

在此,当用户点击类似按钮(第一个按钮)时,值更新并将文本设置到该特定位置(这是有效的)但是它重复这样的值(当首先点击类似按钮 ->位置 0 然后它重复第 4、7 等位置的值。

如何解决每 4 个项目重复设置文本的问题?

请指导我。提前致谢。

我的代码是,/** 适配器类 */

public class Adapter1 extends BaseAdapter {
ImageView imgUnlike[] = null, imgLike[] = null,
imgComments[] = null;
TextView txtLikeUnlike[] = null, txtComments[] = null,

public ArrayList<HashMap<String, String>> arr = null;
Context context = null;
LayoutInflater layoutInflater = null;
HashMap<String, String> getData = new HashMap<String, String>();
String urlLike = null, urlCountLike = null, urlUnlike = null;
String strCountLike = null, strCountCommnets = null;

public Adapter1(Context context,
ArrayList<HashMap<String, String>> arr) {

this.context = context;
this.arr = arr;
layoutInflater = LayoutInflater.from(context);
this.imgUnlike = new ImageView[arr.size()];
this.imgLike = new ImageView[arr.size()];
this.imgComments = new ImageView[arr.size()];
this.txtLikeUnlike = new TextView[arr.size()];
}

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

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

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

@SuppressLint("InflateParams")
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
View row = null;
if (convertView == null) {
LayoutInflater inflater = ((Activity) context)
.getLayoutInflater();
row = inflater.inflate(R.layout.list_item, parent,
false);
} else {
row = convertView;
}
/** Initialize Widgets */
/** Imageview */

imgUnlike[position] = (ImageView) row
.findViewById(R.id.imgUnlike);

imgLike[position] = (ImageView) row
.findViewById(R.id.imgLike);


/** TextView */
txtLikeUnlike[position] = (TextView) row
.findViewById(R.id.txtLikeUnlike);

getData = arr.get(position);





txtLikeUnlike[position].setText(getData
.get(Fragment1.TAG_TOTAL_LIKE_COUNT));



imgUnlike[position]
.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

imgUnlike[position]
.setVisibility(View.INVISIBLE);
imgLike[position]
.setVisibility(View.VISIBLE);

strPostId = arr.get(position).get(
Fragment1.TAG_POST_ID);

urlLike = Urls.BASE_URL
+ "createpostlike.php?post_id=" + strPostId
+ "&user_id=" + myDetail.getUserId();

getCurrentPosition = position;
new sendLikeData().execute();
}
});

imgLike[position].setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
imgLike[position].setVisibility(View.INVISIBLE);
imgUnlike[position].setVisibility(View.VISIBLE);

urlGetAllLike = Urls.BASE_URL + "getlike.php";

getCurrentPosition = position;
new getAllLikeData().execute();
}
});


return row;
}




public class sendLikeData extends AsyncTask<Void, Void, Void> {
protected void onPreExecute() {
super.onPreExecute();
}

@Override
protected Void doInBackground(Void... arg0) {
ServiceHandler sh = new ServiceHandler();
String jsonStr = sh
.makeServiceCall(urlLike, ServiceHandler.GET);

return null;
}

protected void onPostExecute(Void result) {
super.onPostExecute(result);
urlCountLike = Urls.BASE_URL + "getalllike.php?post_id="
+ strPostId;
new getCountLikeData().execute();
};
}


/** Count the Total Like for Selected Items. */
private class getCountLikeData extends AsyncTask<Void, Void, Void> {
JSONObject jsonobject;

@Override
protected void onPreExecute() {
super.onPreExecute();
}

@Override
protected Void doInBackground(Void... arg0) {

dataList = new ArrayList<HashMap<String, String>>();
// Retrieve JSON Objects from the given URL address
jsonobject = JSONFunctions.getJSONfromURL(urlCountLike);
try {
// Locate the array name in JSON
jsonarray = jsonobject.getJSONArray("data");

for (int i = jsonarray.length() - 1; i < jsonarray.length(); i++) {

jsonobject = jsonarray.getJSONObject(i);
// Retrive JSON Objects
strCountLike = jsonobject.getString("Total");
}

} catch (JSONException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}

@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);

Adapter1.notifyDataSetChanged();

txtLikeUnlike[getCurrentPosition].setText(strCountLike);

}
}

最佳答案

我认为您的适配器类将类似于下面使用 viewholder 的类:

public class Adapter1 extends BaseAdapter {


public ArrayList<HashMap<String, String>> arr = null;
Context context = null;
LayoutInflater layoutInflater = null;
HashMap<String, String> getData = new HashMap<String, String>();
String urlLike = null, urlCountLike = null, urlUnlike = null;
String strCountLike = null, strCountCommnets = null;

public Adapter1(Context context,
ArrayList<HashMap<String, String>> arr) {

this.context = context;
this.arr = arr;
layoutInflater = LayoutInflater.from(context);
this.imgUnlike = new ImageView[arr.size()];
this.imgLike = new ImageView[arr.size()];
this.imgComments = new ImageView[arr.size()];
this.txtLikeUnlike = new TextView[arr.size()];
}

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

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

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

@SuppressLint("InflateParams")
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {

final ViewHolder holder;

View row = null;
if (convertView == null) {

LayoutInflater inflater = ((Activity) context)
.getLayoutInflater();
row = inflater.inflate(R.layout.list_item, parent,
false);

holder = new ViewHolder();

holder.imgUnlike[position] = (ImageView) row
.findViewById(R.id.imgUnlike);

holder.imgLike[position] = (ImageView) row
.findViewById(R.id.imgLike);


/** TextView */
holder.txtLikeUnlike[position] = (TextView) row
.findViewById(R.id.txtLikeUnlike);

convertView.setTag(holder);

} else {
holder = (ViewHolder) convertView.getTag();
}
/** Initialize Widgets */
/** Imageview */


getData = arr.get(position);




holder.txtLikeUnlike[position].setText(getData
.get(Fragment1.TAG_TOTAL_LIKE_COUNT));



holder.imgUnlike[position]
.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

holder.imgUnlike[position]
.setVisibility(View.INVISIBLE);
holder.imgLike[position]
.setVisibility(View.VISIBLE);

holder.strPostId = arr.get(position).get(
Fragment1.TAG_POST_ID);

urlLike = Urls.BASE_URL
+ "createpostlike.php?post_id=" + strPostId
+ "&user_id=" + myDetail.getUserId();

getCurrentPosition = position;
new sendLikeData().execute();
}
});

holder.imgLike[position].setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
holder.imgLike[position].setVisibility(View.INVISIBLE);
holder.imgUnlike[position].setVisibility(View.VISIBLE);

urlGetAllLike = Urls.BASE_URL + "getlike.php";

getCurrentPosition = position;
new getAllLikeData().execute();
}
});


return row;
}

public class ViewHolder {
ImageView imgUnlike[] = null, imgLike[] = null,
imgComments[] = null;
TextView txtLikeUnlike[] = null, txtComments[] = null;
}
}

关于android listview在listitem点击事件中重复一些项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27524665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com