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