[英]Custom Adapter with Base adapter list items repeating
动态创建Textview时 , Custom适配器出现问题。 基本上,有不同数量的礼物的不同游戏。 例如,一场比赛可能有3个礼物。 因此,出于这个原因,我正在动态创建Textviews。 但是问题在于,每个滚动条都在修饰项目。 在加载页面时它自身不起作用? 有人可以建议我如何解决吗
public View getView(final int position, View convertView,
ViewGroup parent) {
View view = convertView;
ViewHolder holder;
if (convertView == null) {
view = ((Activity) context).getLayoutInflater().inflate(
R.layout.single_redeem_gift, parent, false);
holder = new ViewHolder();
holder.expiresDate = (TextView) view.findViewById(R.id.expires_date);
holder.expiresTime = (TextView) view.findViewById(R.id.expires_time);
holder.right_container = (LinearLayout) view.findViewById(R.id.right_container);
holder.brandImage = (ImageView) view
.findViewById(R.id.list_image);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(context));
imageLoader.displayImage(venuephotoUrls[position], holder.brandImage,
doption, animateFirstListener);
holder.expiresDate.setText(getDate(Long.valueOf(validUntils[position]).longValue()));
holder.expiresTime.setText(getTime(Long.valueOf(validUntils[position]).longValue()));
Log.d("redeemables[position]",redeemables[position]);
if(redeemables[position].contains("[")) {
try {
array = new JSONArray(redeemables[position]);
System.out.println(array.toString(2));
//loadOccasionData(array);
// TODO Auto-generated method stub
if(array!= null) {
for (int i = 0; i < array.length(); i++) {
JSONObject c = null;
try {
c = array.getJSONObject(i);
String redeemId = c.getString("redeemId");
LinearLayout linearLayout_746 = new LinearLayout(RedeemPrizes.this);
linearLayout_746.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams layout_788 = new LinearLayout.LayoutParams(android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
linearLayout_746.setLayoutParams(layout_788);
final TextView offer_drinks = new TextView(RedeemPrizes.this);
offer_drinks.setId(Integer.valueOf(c.getString("redeemId")));
offer_drinks.setBackgroundResource(R.drawable.redeemprizes_blackbtn);
offer_drinks.setContentDescription(getResources().getString(R.string.app_name));
offer_drinks.setGravity(Gravity.CENTER);
// offer_drinks.setText(c.getJSONObject("prize").get("name").toString());
offer_drinks.setText(c.getString("redeemId"));
LinearLayout.LayoutParams layout_408 = new LinearLayout.LayoutParams(
android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
layout_408.setMargins(0, 5, 0, 5);
offer_drinks.setLayoutParams(layout_408);
linearLayout_746.addView(offer_drinks,layout_408);
holder.right_container.addView(linearLayout_746);
offer_drinks.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), Integer.toString(offer_drinks.getId()), 3000).show();
}
});
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
}
return view;
}
convertView
排除getView()
方法的先前结果。 你需要清洁right_container
中的任何迭代getView()
方法。
例如:
...
try {
array = new JSONArray(redeemables[position]);
System.out.println(array.toString(2));
//loadOccasionData(array);
// TODO Auto-generated method stub
holder.right_container.removeAllViews(); // this will fix Your issue
if(array!= null) {
for (int i = 0; i < array.length(); i++) {
JSONObject c = null;
try {
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.