3

我正在尝试实现自定义 SimpleCursorAdapter 但问题是,当我运行我的应用程序时,listView 没有显示任何内容。这是为什么?这是我的代码:

package com.messageHider;

import android.content.Context;
import android.database.Cursor;
import android.provider.MediaStore;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class myAdapter extends SimpleCursorAdapter {
    private Context appContext;
    private int layout;
    private Cursor mycursor;
    public myAdapter(Context context, int layout, Cursor c, String[] from,int[] to) {
        super(context, layout, c, from, to);
        this.appContext=context;
        this.layout=layout;
        this.mycursor=c;
    }

    @Override
    public int getCount() {
        return 0;
    }

    @Override
    public Object getItem(int arg0) {
        return null;
    }
    @Override
    public long getItemId(int arg0) {
        return 0;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater=(LayoutInflater)appContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView=inflater.inflate(layout, null, true);
        ImageView imageViewVidIcon=(ImageView)convertView.findViewById(R.id.imageViewVidThumb);
        imageViewVidIcon.setImageResource(R.drawable.videothumb);
        ImageView imageViewPlayBtn=(ImageView)convertView.findViewById(R.id.imageViewPlaybtn);
        imageViewPlayBtn.setImageResource(R.drawable.playbtn);
        TextView textViewTitle=(TextView)convertView.findViewById(R.id.textViewVideoTitle);
        String title=mycursor.getString(mycursor.getColumnIndex(MediaStore.Video.Media.DISPLAY_NAME));
        textViewTitle.setText(title);
        imageViewPlayBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(appContext, "It works", Toast.LENGTH_LONG).show();
            }
        });
        return convertView;
    }

}
4

3 回答 3

1

我会说你的

public int getCount() {
        return 0;
    }

使 ListView 认为没有什么可查看的。尝试

return 1;

用于启动或调试会话。

于 2012-01-20T17:49:06.873 回答
0
@Override
public int getCount() {
    return 0;
}

此函数返回列表中的元素数。所以当你返回时它不能为 0,它应该是你的元素列表的大小。

于 2012-10-25T19:11:00.103 回答
0

您必须在 custom 中手动调用bindView()和调用。因为在原始源代码中,并在里面被调用,所以你在覆盖它的时候也必须这样做。newView()getView()bindView()newView()getView()

于 2017-08-19T06:49:43.170 回答