3

getView の内部 addprod.setOnClickListener 初期化すると、画像に 0 とマイナス ボタンが表示されるので、2 つのビューを表示します。

final Button decprod=(Button)convertView.findViewById(R.id.decprod);
final TextView disprod=(TextView)convertView.findViewById(R.id.disprod);

このように、つまり、両方のビューを最終として表示すると、両方のビューが必要な場所に正確に表示されますが、addprod ボタンを押して最終を削除すると、この画像でわかるように、両方のビューが他の場所に表示されます。 ...匿名の内部クラスは、最終的な囲みメソッドの変数にのみアクセスできることを知っています。または、グローバルとして宣言することもできますが、グローバルに宣言すると、正しいビューを表示することはできません

ここに画像の説明を入力

 public class ItemListBaseAdapter extends BaseAdapter {


            private  ArrayList<HashMap<String, String>> itemDetailsrrayList;
             Bitmap bitmap[];
                Context context1;
                String ab;




            private LayoutInflater l_Inflater;

            public ItemListBaseAdapter(Context context, ArrayList<HashMap<String, String>> mylist)
            {

                itemDetailsrrayList = mylist;
                //l_Inflater = LayoutInflater.from(context);
                context1=context;

            }

            public int getCount() {
                return itemDetailsrrayList.size();

            }

            public Object getItem(int position) {
                return itemDetailsrrayList.get(position);
            }

            public long getItemId(int position) {

                return position;
            }




            public View getView( final int position, View convertView, ViewGroup parent)
            {
              int ruban=3;

                //final ViewHolder holder;


                if (convertView == null) {
                    l_Inflater = LayoutInflater.from(context1);

                     convertView = l_Inflater.inflate(R.layout.list1, null,true);




                }


                TextView txt_itemName = (TextView) convertView.findViewById(R.id.textView1);
                TextView txt_itemDescription = (TextView) convertView.findViewById(R.id.mrp1);
                TextView txt_itemPrice = (TextView) convertView.findViewById(R.id.ourprice1);
                TextView txt_itemSave = (TextView) convertView.findViewById(R.id.save1);
                //holder.txt_itemw = (TextView) convertView.findViewById(R.id.textView4);
                WebView itemimmm=(WebView)convertView.findViewById(R.id.imageView1);
                TextView t1 = (TextView) convertView.findViewById(R.id.t1);
                TextView t2 = (TextView) convertView.findViewById(R.id.t2);
                TextView t3 = (TextView) convertView.findViewById(R.id.t3);
                Button addprod=(Button)convertView.findViewById(R.id.addprod);
                final Button decprod=(Button)convertView.findViewById(R.id.decprod);
                final TextView disprod=(TextView)convertView.findViewById(R.id.disprod);
                decprod.setVisibility(View.GONE);
                disprod.setVisibility(View.GONE);

                txt_itemDescription.setPaintFlags(txt_itemDescription.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
                itemimmm.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

                txt_itemName.setTypeface(AllItems.face);
                txt_itemDescription.setTypeface(AllItems.face);
                txt_itemPrice.setTypeface(AllItems.face);
                txt_itemSave.setTypeface(AllItems.face);
                //holder.txt_itemw.setTypeface(AllItems.face);
                t1.setTypeface(AllItems.rupee);
                t2.setTypeface(AllItems.rupee);
                t3.setTypeface(AllItems.rupee);
                //StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                //StrictMode.setThreadPolicy(policy);
                txt_itemName.setText(itemDetailsrrayList.get(position).get("name"));
                txt_itemDescription.setText(itemDetailsrrayList.get(position).get("price"));
                txt_itemPrice.setText(itemDetailsrrayList.get(position).get("sp"));
                txt_itemSave.setText(itemDetailsrrayList.get(position).get("save"));
                //holder.txt_itemw.setText(itemDetailsrrayList.get(position).get("type"));
                itemimmm.loadUrl(itemDetailsrrayList.get(position).get("image"));
                if(itemDetailsrrayList.get(position).get("name").equals("Daughter")||itemDetailsrrayList.get(position).get("name").equals("Ethnic"))
                {
                Log.e("name", String.valueOf(itemDetailsrrayList.get(position).get("name")));
                //decprod.setVisibility(View.VISIBLE);
                //disprod.setVisibility(View.VISIBLE);
                }

                  // Log.e("before", "try");


            /*  try{

                        Log.e("try", String.valueOf(itemDetailsrrayList.get(position).get("image")));
                     Bitmap bitmap1 = BitmapFactory.decodeStream((InputStream) new URL(itemDetailsrrayList.get(position).get("image")).getContent());
                     itemimmm.setImageBitmap(bitmap1);
                    }catch(Exception ex){

                         ex.printStackTrace();
                         Log.e("error",String.valueOf(ex));
                     itemimmm.setImageResource(getResources().getIdentifier("ic_launcher", "drawable", getPackageName())); 

                        Log.e("catch", "catch");*/

                //prodImage.setImageResource(getResources().getIdentifier("sample", "drawable", getPackageName()));


                //itemimmm.setImageResource(getResources().getIdentifier("ic_launcher", "drawable", getPackageName())); 




                //holder.itemImage.setImageBitmap(bitmap[position]);

                /*if(){
                    disprod.setText(String.valueOf(Integer.parseInt(String.valueOf(disprod.getText()))));
                }*/


              addprod.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0)
                    {


                        decprod.setVisibility(View.VISIBLE);
                        disprod.setVisibility(View.VISIBLE);





                    }
                });



                decprod.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0)
                    {
                        //Log.v("item name", String.valueOf(itemDetailsrrayList.get(position).get("price")));

                    }
                });



               /* textView.setText(getelement()[position]);

                 ImageView imageView = (ImageView) convertView
                .findViewById(R.id.icon);
                 imageView.setImageBitmap(bitmap);*/




                    return convertView;




                   }




        }
4

3 に答える 3

1

適用すると、コンポーネントに割り当てられた場所が削除されます。invisibleを使用してみてください。

于 2012-12-21T12:55:57.300 に答える
1

アダプター内ではなく、ListActivity 内でボタン アクションを作成するようにしてください。

于 2012-12-21T11:39:30.920 に答える
1

シンプルに、アイテムの位置をビュー タグに追加し、後で OnClick(View v) で位置を取得してみてください。

于 2013-07-16T23:36:26.803 に答える