【问题标题】:How to add custom List on a list View如何在列表视图上添加自定义列表
【发布时间】:2014-06-30 05:33:05
【问题描述】:

我正在使用自定义数组适配器在列表视图上添加自定义列表,但它只添加列表中的最后一项是我的自定义数组适配器

public class CustomCreditsOffer extends ArrayAdapter<Credits> {

private LayoutInflater inflater;
Context context;
Credits items;
ArrayList<Credits> resultList;

public CustomCreditsOffer(Context context, ArrayList<Credits> credits) {
    super(context, R.layout.credit_offers_sale, credits);
    resultList=credits;
    inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    Holder holder;
    items=getItem(position);
    if(convertView==null){
        convertView = inflater.inflate(R.layout.credit_offers_sale,parent,false);
        holder=new Holder();
        holder.creditsTV = (TextView) convertView
                .findViewById(R.id.creditSaleNoOfCreditsTV);
        holder.typeTV = (TextView) convertView
                .findViewById(R.id.creditTypeTV);
        holder.creditsPurchaseBT = (Button) convertView
                .findViewById(R.id.creditSalePurchaseBT);
        holder.creditsPurchaseBT.setText(items.amount);
        holder.creditsTV.setText(items.number);
        holder.typeTV.setText(items.title);
    }

    return convertView;
}

public class Holder {
    public TextView creditsTV;
    public TextView typeTV;
    public Button creditsPurchaseBT;

}

}

这是我如何将项目添加到 addpater 的代码

@Override
public void onSyncSuccess(String controller, String action, boolean status,
        JSONObject jsonObject) {
    PostCost post=new PostCost();
    // getting Current credits
    if (status && action.compareTo("credit") == 0) {
        try {
            Credits credit=new Credits();
            credit.yourBalance= jsonObject.getString("your_balance");
            credit.premiumAmount= jsonObject.getString("premium_amount");
            credit.isPremium=jsonObject.getString("is_premium_mem");

            creditPremiumMemberBT.setText("$"+credit.premiumAmount);
            creditsYourCredits.setText(credit.yourBalance);

            if(!isPremium.equals("0")){
                creditPremiumTV.setText("You are a premium member");
                creditPremiumMemberBT.setVisibility(View.GONE);
            }
            JSONArray adminCredit=jsonObject.getJSONArray("adminCredit");

            for(int a=0;a<adminCredit.length();a++){
                JSONObject detail=adminCredit.getJSONObject(a);
                credit.number=detail.getString("number");
                credit.amount=detail.getString("amount");
                credit.title=detail.getString("type_title");
                credit.key=detail.getString("android_key");
                credit.id=detail.getString("id");
                credit.typeId=detail.getString("type_id");
                creditList.add(credit);
            }
        } 

        catch (Exception e) {

        }
        creditAdapter=new CustomCreditsOffer(getActivity(), creditList);
        creditAvailableProductOffersLV.setAdapter(creditAdapter);
    }
    }

这段代码的作用是将我从服务器响应中获得的最后一项添加到列表中。

【问题讨论】:

  • 什么是“credit”,一个hashmap?
  • 一个存储数据的类
  • 发布您的信用等级
  • 尝试在循环中初始化信用
  • 我该怎么做??

标签: android custom-lists


【解决方案1】:

将 getView 方法更改为:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    Holder holder;
    items=getItem(position);
    if(convertView==null){
        convertView = inflater.inflate(R.layout.credit_offers_sale,parent,false);
        holder=new Holder();
        holder.creditsTV = (TextView) convertView
                .findViewById(R.id.creditSaleNoOfCreditsTV);
        holder.typeTV = (TextView) convertView
                .findViewById(R.id.creditTypeTV);


        holder.creditsPurchaseBT = (Button) convertView
                .findViewById(R.id.creditSalePurchaseBT);

        convertView.setTag(holder);


    }
    else
        holder = (Holder)convertView.getTag();

     holder.creditsPurchaseBT.setText(items.amount);
     holder.creditsTV.setText(items.number);
     holder.typeTV.setText(items.title);

    return convertView;
}

如果您的视图为空,您只需处理您的代码。

【讨论】:

  • 根据服务器的响应,通常是 6
  • 你在使用我的代码吗?因为如果你使用它,你必须有一个错误,再试一次我的代码,因为一切都是正确的
猜你喜欢
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
  • 2011-07-25
相关资源
最近更新 更多