在动态创建 Textview 时,我遇到了自定义适配器的问题。 基本上有不同的游戏有不同数量的礼物。例如,对于一个游戏,可能有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;
}
答案 0 :(得分:1)
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 {
...