2017-03-20 34 views
-2

これは私のリストビューです。私のImageButton(リストビュー)をクリックしようとしていますが、textview(リストビュー)欲しいです。私の午前中は誰か助けてくれてありがとう、ありがとう。ListViewのImageButtonをクリックしてTextViewの値を変更する方法

public class ViewAdapter extends BaseAdapter implements Filterable { 

     LayoutInflater mInflater; 

     public ViewAdapter() { 
      mInflater = LayoutInflater.from(getActivity()); 
     } 

     @Override 
     public int getCount() { 
      return pl.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      return position; 
     } 

     @Override 
     public long getItemId(int position) { 
      return position; 
     } 

     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 

      if (convertView == null) { 
       convertView = mInflater.inflate(R.layout.listproduct, null); 
      } 
      final TextView ProductCode = (TextView) convertView.findViewById(R.id.productcode); 
      ProductCode.setText("" + pl.get(position).getProductCode()); 
      final TextView Qty = (TextView) convertView.findViewById(R.id.qty); 
      Qty.setText("" + pl.get(position).getQty()); 
      final TextView Description = (TextView) convertView.findViewById(R.id.description); 
      Description.setText("" + pl.get(position).getProductName()); 
      final String p = Description.getText().toString(); 
      final TextView Price = (TextView) convertView.findViewById(R.id.price); 
      Price.setText("" + pl.get(position).getProductPrice()); 
      final ImageButton minus = (ImageButton) convertView.findViewById(R.id.minus); 

      minus.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Qty.setText("testing")// textview never change to "testing" 
       } 
      }); 
      notifyDataSetChanged(); 
      return convertView; 
     } 

答えて

0

は、基本的にはRecyclerViewを使用しますが、あなたはまだリストビューを使用したい場合は、以下のリンクのようにビュー・ホルダー・アプローチを使用する必要があります。

Optimize list view

そして、あなたが今までに呼び出してはなりませんnotifyDataSetChanged() getViewメソッドで、リストビューのスクロール時に複数回呼び出される場合

0

以下のようにホルダーでコードを試してください。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder holder; 

    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.list_entry, null); 
     holder = new ViewHolder(); 
     holder.nameTextView = (TextView) convertView.findViewById(R.id.person_name); 
     holder.surnameTextView = (TextView) convertView.findViewById(R.id.person_surname); 
     holder.personImageView = (ImageView) convertView.findViewById(R.id.person_image); 
     convertView.setTag(holder); 
    } 
    else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    Person person = getItem(position); 

    holder.nameTextView.setText(person.getName()); 
    holder.surnameTextView.setText(person.getSurname()); 
    //holder.personImageView.setImageBitmap(person.getImage()); 

    return convertView; 
} 

そして、私の知る限り、これはあなたがカスタムリストビュー内のデータを移入一度ので、カスタムを、それを再作成またはお電話持って行うことができないあなたの質問から理解し

holder.personImageView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       holder.nameTextView.setText("testing")// textview never change to "testing" 
      } 
     }); 
0
Use this code : 





    public View getView(final int position, View convertView, ViewGroup parent) { 

        if (convertView == null) { 
         convertView = mInflater.inflate(R.layout.listproduct, null); 
        } 
        final TextView ProductCode = (TextView) convertView.findViewById(R.id.productcode); 
        ProductCode.setText("" + pl.get(position).getProductCode()); 
        final TextView Qty = (TextView) convertView.findViewById(R.id.qty); 

        final TextView Description = (TextView) convertView.findViewById(R.id.description); 
        Description.setText("" + pl.get(position).getProductName()); 
        final String p = Description.getText().toString(); 
        final TextView Price = (TextView) convertView.findViewById(R.id.price); 
        Price.setText("" + pl.get(position).getProductPrice()); 
        ImageButton minus = (ImageButton) convertView.findViewById(R.id.minus); 
        minus.setTag(position); 
        minus.setOnClickListener(clickButton); 

        return convertView; 
       } 

      private View.OnClickListener clickButton = new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Object tag =v.getTag(); 
        if(tag!=null) 
        { 
        int pos = (Integer)tag; 
       Qty.setText(pl.get(position).getQty()); 
       notifyDataSetChanged(); 


     } 
       } 
      } ; 
0

を次のようにクリックしてくださいlistView再度変更したいテキスト表示で!

関連する問題