Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击光标适配器_Android_List_Sqlite_Simplecursoradapter - Fatal编程技术网

Android 单击光标适配器

Android 单击光标适配器,android,list,sqlite,simplecursoradapter,Android,List,Sqlite,Simplecursoradapter,我正在尝试创建一个android应用程序,用于显示SQLite数据库中的图书对象。我正在尝试使用onItemClick为光标适配器创建一个点击式侦听器。当用户单击列表中的某一行时,我正试图显示该书的价格。但是,我无法使用正确的语法来显示它 这是我的BookListAdapter类 public class BookListFragment extends ListFragment { private Bookstore mBookstore; priva

我正在尝试创建一个android应用程序,用于显示SQLite数据库中的图书对象。我正在尝试使用onItemClick为光标适配器创建一个点击式侦听器。当用户单击列表中的某一行时,我正试图显示该书的价格。但是,我无法使用正确的语法来显示它

这是我的BookListAdapter类

    public class BookListFragment extends ListFragment {

        private Bookstore mBookstore;
        private List<Book> mBooks;

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            ContentResolver resolver = this.getActivity().getContentResolver();
            Uri uri = Uri.parse("content://com.bookstore.app.model.BookContentProvider/books");
            Cursor cursor = resolver.query(uri, null, null, null, null);

            String[] from = new String[] {
                "title", "author", "year" 
            };
            int [] to = new int[] {
                R.id.list_item_book_title_textView,
                R.id.list_item_book_author_textView,
                R.id.list_item_book_year_textView
            };

        // CREATE THE ADAPTER USING THE CURSOR POINTING TO THE DATABASE
            SimpleCursorAdapter adapter = new SimpleCursorAdapter(
                    this.getActivity(), R.layout.list_item_book, cursor, from, to, 0);

            setListAdapter(adapter);

            Activity activity = getActivity();

            mBookstore = Bookstore.getInstance(activity);
            mBooks = mBookstore.getBooks();

            ListAdapter adapter1 = new BookListAdapter(activity, mBooks);

            setListAdapter(adapter1);



        }



    }
public class BookListAdapter extends ArrayAdapter<Book> implements ListAdapter {

    private Context mContext;
    private List<Book> mBooks;

    public BookListAdapter(Context context, List<Book> books) {
        super(context, R.layout.list_item_book, books);

        mContext = context;
        mBooks = books;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            // create a new list item view
            Activity activity = (Activity)mContext;
            LayoutInflater inflater = activity.getLayoutInflater();
            convertView = inflater.inflate(R.layout.list_item_book, null);
        }



        // customize layout for book
        Book bk = mBooks.get(position);

        TextView titleView = (TextView)convertView.findViewById(R.id.list_item_book_title_textView);
        TextView authorView = (TextView)convertView.findViewById(R.id.list_item_book_author_textView);
        TextView PriceView = (TextView)convertView.findViewById(R.id.list_item_book_price_textView);
        TextView yearView = (TextView)convertView.findViewById(R.id.list_item_book_year_textView);

        titleView.setText(bk.getTitle());
        authorView.setText(bk.getAuthor());
        yearView.setText("" + bk.getYear());

        return convertView;
    }

}
公共类BookListFragment扩展ListFragment{
私人书店;
私人清单MBook;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
ContentResolver解析器=this.getActivity().getContentResolver();
Uri=Uri.parse(“content://com.bookstore.app.model.BookContentProvider/books");
Cursor Cursor=resolver.query(uri,null,null,null,null);
String[]from=新字符串[]{
“标题”、“作者”、“年份”
};
int[]至=新int[]{
R.id.list\u item\u book\u title\u textView,
R.id.list\u item\u book\u author\u textView,
R.id.list\u item\u book\u year\u textView
};
//使用指向数据库的光标创建适配器
SimpleCursorAdapter=新的SimpleCursorAdapter(
this.getActivity(),R.layout.list_item_book,游标,from,to,0);
setListAdapter(适配器);
Activity=getActivity();
mBookstore=Bookstore.getInstance(活动);
mBooks=mBookstore.getBooks();
ListAdapter1=新BookListAdapter(活动,mBooks);
setListAdapter(适配器1);
}
}
这是我的BooklistAdapter类

    public class BookListFragment extends ListFragment {

        private Bookstore mBookstore;
        private List<Book> mBooks;

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            ContentResolver resolver = this.getActivity().getContentResolver();
            Uri uri = Uri.parse("content://com.bookstore.app.model.BookContentProvider/books");
            Cursor cursor = resolver.query(uri, null, null, null, null);

            String[] from = new String[] {
                "title", "author", "year" 
            };
            int [] to = new int[] {
                R.id.list_item_book_title_textView,
                R.id.list_item_book_author_textView,
                R.id.list_item_book_year_textView
            };

        // CREATE THE ADAPTER USING THE CURSOR POINTING TO THE DATABASE
            SimpleCursorAdapter adapter = new SimpleCursorAdapter(
                    this.getActivity(), R.layout.list_item_book, cursor, from, to, 0);

            setListAdapter(adapter);

            Activity activity = getActivity();

            mBookstore = Bookstore.getInstance(activity);
            mBooks = mBookstore.getBooks();

            ListAdapter adapter1 = new BookListAdapter(activity, mBooks);

            setListAdapter(adapter1);



        }



    }
public class BookListAdapter extends ArrayAdapter<Book> implements ListAdapter {

    private Context mContext;
    private List<Book> mBooks;

    public BookListAdapter(Context context, List<Book> books) {
        super(context, R.layout.list_item_book, books);

        mContext = context;
        mBooks = books;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            // create a new list item view
            Activity activity = (Activity)mContext;
            LayoutInflater inflater = activity.getLayoutInflater();
            convertView = inflater.inflate(R.layout.list_item_book, null);
        }



        // customize layout for book
        Book bk = mBooks.get(position);

        TextView titleView = (TextView)convertView.findViewById(R.id.list_item_book_title_textView);
        TextView authorView = (TextView)convertView.findViewById(R.id.list_item_book_author_textView);
        TextView PriceView = (TextView)convertView.findViewById(R.id.list_item_book_price_textView);
        TextView yearView = (TextView)convertView.findViewById(R.id.list_item_book_year_textView);

        titleView.setText(bk.getTitle());
        authorView.setText(bk.getAuthor());
        yearView.setText("" + bk.getYear());

        return convertView;
    }

}
公共类BookListAdapter扩展ArrayAdapter实现ListAdapter{
私有上下文;
私人清单MBook;
public BookListAdapter(上下文、图书列表){
超级(上下文、右布局、列表、项目、书籍);
mContext=上下文;
mBooks=书籍;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
//创建新的列表项视图
活动活动=(活动)mContext;
LayoutInflater充气器=活动。getLayoutInflater();
convertView=充气机。充气(R.layout.list\u item\u book,空);
}
//自定义书籍的布局
Book bk=mBooks.get(位置);
TextView titleView=(TextView)convertView.findViewById(R.id.list\u item\u book\u title\u TextView);
TextView authorView=(TextView)convertView.findViewById(R.id.list\u item\u book\u author\u TextView);
TextView价格视图=(TextView)convertView.findViewById(R.id.list\u item\u book\u price\u TextView);
TextView yearView=(TextView)convertView.findViewById(R.id.list\u item\u book\u year\u TextView);
titleView.setText(bk.getTitle());
authorView.setText(bk.getAuthor());
yearView.setText(“+bk.getYear());
返回视图;
}
}
我不确定我会把这样的东西放在哪里

 public void onItemClick(AdapterView<?> parent, View v, final int position)
    {
        Cursor cursor = (Cursor) adapter.getItem(position);
        yearView.setText("" + bk.getYear());
    }
public void onItemClick(AdapterView父视图、视图v、最终整型位置)
{
游标=(游标)适配器.getItem(位置);
yearView.setText(“+bk.getYear());
}
以显示光标指向的行的具体价格。 任何帮助都将不胜感激


如果有任何混淆,请发表评论,我会澄清。

为什么要给setListAdapter打两次电话?抱歉,本不该如此。