【问题标题】:How to create a custom ListView In Android?如何在 Android 中创建自定义 ListView?
【发布时间】:2015-07-11 05:43:31
【问题描述】:

这是我的MainActivity.java,其中包含Listview

public class MainActivity extends Activity {

    String maintext[] = { "item 1", "item 2", "item 3", "item 4", "item 5",
            "item 1", "item 2", "item 3", "item 4", "item 5", "item 1",
            "item 2", "item 3", "item 4", "item 5" };
    String text[] = { "342", "3542", "3523", "23654", "3545", "342", "3542",
            "3523", "23654", "3545", "342", "3542", "3523", "23654", "3545",
            "342", "3542", "3523", "23654", "3545" };
    ListView list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        list = (ListView) findViewById(R.id.listView1);

        CustAdapter adp = new CustAdapter(MainActivity.this, maintext, text);
        list.setAdapter(adp);
    }
}

这是我的CustAdapter 适配器类 它工作正常,但是当我向上滚动到最后一项时,它显示空指针错误。

public class CustAdapter extends BaseAdapter {
    Context context;
    String maintext[];
    String text[];

    public CustAdapter(Context context, String maintext[], String text[]) {
        // TODO Auto-generated constructor stub

        this.context = context;
        this.maintext = maintext;
        this.text = text;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return maintext.length;
    }

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return maintext[arg0];
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return arg0;
    }


    ImageView imgv;
    TextView mainText1;
    TextView text1;

    @Override
    public View getView(int arg0, View arg1, ViewGroup arg2) {
        // TODO Auto-generated method stub
        if (arg1 == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            arg1 = inflater.inflate(R.layout.listview, null);

            imgv=(ImageView) arg1.findViewById(R.id.imageView1);

            mainText1=(TextView) arg1.findViewById(R.id.textView1);

            text1=(TextView) arg1.findViewById(R.id.textView2);

            imgv.setBackgroundResource(R.drawable.ic_launcher);

            mainText1.setText(maintext[arg0]);

            text1.setText(text[arg0]);

        } else {
            arg1 = (View)arg1.getTag();
        }

        return arg1;
    }

}

【问题讨论】:

    标签: android listview scroll


    【解决方案1】:
    BaseAdapter 的

    getView() 应如下所示:

     @Override
     public View getView(final int position, View convertView, ViewGroup parent) {
         if (convertView == null) {
                holder = new ViewHolder();
                convertView = mLayoutInflater.inflate(R.layout.row_push_notification, null);
                    // bind views
                    holder.txtTitle = (TextView) convertView.findViewById(R.id.txtTitle);
                    holder.txtDateTime = (TextView) convertView.findViewById(R.id.txtDateTime);
    
                    // set tag
                    convertView.setTag(holder);
                } else {
                    // get tag
                    holder = (ViewHolder) convertView.getTag();
                }
    
                holder.txtTitle.setText(your_one_array[position]);
                holder.txtDateTime.setText(your_two_array[position]);
    
           return convertView;
      }
    
    BaseAdapter 中的

    ViewHolder 类。

    private class ViewHolder {
         private TextView txtTitle, txtDateTime;
    }
    

    希望对你有所帮助。

    【讨论】:

    • @PankajBansal,很高兴帮助你兄弟 :)
    【解决方案2】:

    您的 maintext[] 和 text[] 元素不匹配,maintext 对象有 15 个值,而文本对象有 20 个值,从文本对象中删除 5 个值并尝试..

    【讨论】:

    • 好的,我从 text[] 中删除了 5 个对象,但仍然是同样的错误。
    猜你喜欢
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多