我正在从基本适配器切换到 cursorAdapter。所以我创建了我的 CursorAdapter 类
public class OrderListAdapterCursor extends CursorAdapter{
private GetInventoryColor getInvColor = new GetInventoryColor();
public OrderListAdapterCursor(Context context, Cursor c, String x) {
super(context, c);
// TODO Auto-generated constructor stub
}
@Override
public void bindView(View vi, final Context context, Cursor cursor) {
// TODO Auto-generated method stub
final ViewHolder holder = new ViewHolder();
holder.thumb_image =(ImageView)vi.findViewById(R.id.ivOrderPicture); // thumb image
holder.tvmainOrder= (TextView)vi.findViewById(R.id.tvMainOrder); // titleOrder
holder.tvPrice = (TextView)vi.findViewById(R.id.tvOrderPrice); // price
holder.tvItemID = (TextView)vi.findViewById(R.id.tvItemID); // itemID
holder.tvItemCode = (TextView)vi.findViewById(R.id.tvItemCode); // item Code
holder.myLinearLayout = (LinearLayout) vi.findViewById(R.id.myLinearLayout);
holder.mylinearForRed = (LinearLayout)vi.findViewById(R.id.mylinearForRed);
holder.btnQuantity = (TextView)vi.findViewById(R.id.tvQuantity);
holder.tvmainOrder.setText(cursor.getString(cursor.getColumnIndex(cursor.getColumnName(0))));
//tvmainOrder.setTypeface(modGen.typeFaceArial);
holder.tvItemID.setText(cursor.getString(cursor.getColumnIndex(cursor.getColumnName(2))));
//tvItemID.setTypeface(modGen.typeFaceArial);
holder.tvItemCode.setText(cursor.getString(cursor.getColumnIndex(cursor.getColumnName(1))));
//tvItemCode.setTypeface(modGen.typeFaceArial);
holder.tvPrice.setText(cursor.getString(cursor.getColumnIndex(cursor.getColumnName(3))));
holder.btnQuantity.setText(cursor.getString(cursor.getColumnIndex(cursor.getColumnName(4))));
//btnQuantity.setTag(position);
//btnInfo.setTag(position);
holder.thumb_image.setTag(cursor.getString(cursor.getColumnIndex(cursor.getColumnName(2))));
holder.thumb_image.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Object as = holder.thumb_image.getTag();
final Integer myPosition = Integer.valueOf(as.toString());
Toast.makeText(context, ""+myPosition, Toast.LENGTH_LONG).show();
//String myItemID = data.get(myPosition).orderitemID;
//((TransactionPage) mainContext).ShowProductCatalogItem(myItemID, "0");
}
});
// String background = data.get(position).orderColor;
String background = getInvColor.getItemIDColor(cursor.getString(cursor.getColumnIndex(cursor.getColumnName(2))), context);
if (background.equalsIgnoreCase("RED")){
holder.myLinearLayout.setBackgroundColor(Color.RED);
}
else if (background.equalsIgnoreCase("YELLOW")){
holder.myLinearLayout.setBackgroundColor(Color.YELLOW);
}
else
{
holder.myLinearLayout.setBackgroundColor(Color.GREEN);
}
//tvStocksQty.setText(data.get(position).stocksQty);
LinearLayout mylinearForRed = (LinearLayout)vi.findViewById(R.id.mylinearForRed);
String qty1 = cursor.getString(cursor.getColumnIndex(cursor.getColumnName(4)));
if (qty1 == null ||qty1.equalsIgnoreCase("")){
mylinearForRed.setVisibility(View.INVISIBLE);
//int resmyID =R.drawable.ribbutton_counter;
//mylinearForRed.setBackgroundResource(resmyID);
}else{
mylinearForRed.setVisibility(View.VISIBLE);
//int resmyID =R.drawable.ribbutton_counter;
//mylinearForRed.setBackgroundResource(resmyID);
}
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View retView = inflater.inflate(R.layout.order_list_style, parent, false);
return retView;
}
static class ViewHolder
{
public ImageView thumb_image;
public TextView tvmainOrder;
public TextView tvPrice;
public TextView tvItemID;
public TextView tvItemCode;
public TextView btnQuantity;
public LinearLayout myLinearLayout;
public LinearLayout mylinearForRed;
}
}
并使用此代码和查询绑定它
selectQuery = "SELECT item_tb.dDesc, item_tb.itemcode, item_tb.ID as _id, price_tb.dPrice, transaction_tb.qtyOrdered FROM item_tb " +
"INNER JOIN price_tb ON item_tb.ID = price_tb.itemID " +
"INNER JOIN category_tb ON category_tb.ID = item_tb.categoryID " +
"LEFT JOIN transaction_tb ON item_tb.ID = transaction_tb.itemID " +
"WHERE category_tb.dDesc LIKE '"+ category +"%' " +
"AND (item_tb.dDesc LIKE '%" + sort +"%' OR " +
"item_tb.itemCode LIKE '" + sort + "%') " +
"AND item_tb.isPublish = '1'" +
"ORDER BY item_tb.dDesc ASC";
mySQLiteAdapter = new SQLiteAdapter(context);
mySQLiteAdapter.openToRead();
final Cursor cursor =mySQLiteAdapter.read(selectQuery);
//new Handler().post(new Runnable() {
// public void run() {
orderlistcursor= new OrderListAdapterCursor(context, cursor, sort);
listViewSearchPanel.setAdapter(orderlistcursor);
cursor.close();
mySQLiteAdapter.close();
抱歉,我是这个光标适配器的新手。我很确定游标有数据,因为使用基本适配器包含 900 多个数据。我的问题是为什么,listview 没有绑定。
有什么我想念的吗?
多谢你们