材料がグリッドに表示され、各グリッド要素に材料の画像、数量の編集テキスト、チェックボタン、および在庫があるかどうかに応じて赤または緑に変わる画像がある在庫チェックアプリケーションがあります。画像が緑色の場合は「使用可能」に設定され、画像が赤色の場合は「使用不可」に設定されるテキストビューもあります。
ベース アダプターを拡張するカスタム アダプターを使用しています。
チェックボタンを押すまで、すべて正常に動作しています
edittext textwatcher を使用してテキストを変更した位置を取得しましたが、チェック ボタンを押すと、3*3 グリッドの 9 番目の要素で画像が緑色に設定されます。
viewHolder を使用していますが、まだ機能していません。
誰でも助けてください。
以下のコードを参照してください
private class CustomAdapter extends ArrayAdapter<HashMap<String, Object>> {
private Context context;
boolean[] checkboxstate;
ViewHolder viewHolder;
ArrayList<HashMap<String, Object>> testdata;
public CustomAdapter(Context context, int textViewResourceId,
ArrayList<HashMap<String, Object>> testdata) {
super(context, textViewResourceId, testdata);
this.context=context;
this.testdata=testdata;
checkboxstate = new boolean[testdata.size()];
}
private class ViewHolder {
TextView txt_product;
ImageView image_available;
ImageView image_product;
TextView txt_available;
EditText quantity;
Button check;
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
View gridView;
if (convertView == null) {
gridView=new View(context);
convertView = inflater.inflate(R.layout.salesdummy, null);
viewHolder = new ViewHolder();
// cache the views
viewHolder.quantity=(EditText)convertView.findViewById(R.id.quantity);
viewHolder.image_product=(ImageView)convertView.findViewById(R.id.image1);
viewHolder.image_available=(ImageView)convertView.findViewById(R.id.imagecheck);
viewHolder.txt_available=(TextView)convertView.findViewById(R.id.txt_available);
viewHolder.check=(Button)convertView.findViewById(R.id.btncheck);
viewHolder.txt_product=(TextView)convertView.findViewById(R.id.product);
// link the cached views to the convertview
convertView.setTag(viewHolder);
} else
viewHolder = (ViewHolder) convertView.getTag();
// set the data to be displayed
viewHolder.txt_product.setText(testdata.get(position).get("MATERIAL").toString());
int photoId=(Integer) testdata.get(position).get("IMAGE");
viewHolder.image_product.setImageDrawable(getResources().getDrawable(photoId));
/* viewHolder.quantity.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
quant=s.toString();
}
});
*/
viewHolder.check.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Log.d("VAlue of string",quant);
int i_quant;
i_quant=Integer.parseInt(quant);
String material=testdata.get(position).get("MATERIAL").toString();
Log.d("Check material",material);
Cursor c=db.GetMaterial(material);
rec_quantity=c.getString(2);
System.out.println("Value of received quantity is" + rec_quantity);
i_rec_quantity=Integer.parseInt(rec_quantity);
if(i_quant>i_rec_quantity)
{
System.out.println("===============Value is greater than stock");
viewHolder.image_available.setBackgroundDrawable(getResources().getDrawable(R.drawable.red));
viewHolder.txt_available.setText("Not Available");
}
else
{
viewHolder.image_available.setBackgroundDrawable(getResources().getDrawable(R.drawable.green));
viewHolder.txt_available.setText("Available");
}
}
});
viewHolder.quantity.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
quant=s.toString();
}
});
/*
viewHolder.txt_name.setText(testdata.get(position)
.get("NAME").toString());
viewHolder.txt_salesvolume.setText(testdata.get(position)
.get("SALESVOLUME").toString());
viewHolder.txt_overdue.setText(testdata.get(position)
.get("OVERDUE").toString());
viewHolder.txt_outstanding.setText(testdata.get(position)
.get("OUTSTANDING").toString());
viewHolder.txt_creditlimit.setText(testdata.get(position)
.get("CREDIT_LIMIT").toString());
viewHolder.txt_creditutilization.setText(testdata.get(position)
.get("CREDIT_UTILIZATION").toString());
String creditlimit=testdata.get(position).get("CREDIT_LIMIT").toString();
String creditutilized=testdata.get(position).get("CREDIT_UTILIZATION").toString();
*/
/*
String remcom=testdata.get(position).get("CREDIT_UTILIZATION").toString();
Log.d("Remcom value",remcom);
String remcom1=remcom.replace(",","");
int inint=Integer.parseInt(remcom1);
if(inint>150000)
{
viewHolder.txt_creditutilization.setTextColor(Color.RED);
}
*/
// VITAL PART!!! Set the state of the
// CheckBox using the boolean array
// //HAVE OPENED THE BELOW COMMENT AND HAVE DONE THIS TO CHECK
// WHETHER DUPLICATE CHECKS ARE NOT IMPLEMENTED
// return the view to be displayed
return convertView;
}
}