2016-06-06 13 views
0

Ich möchte die Image-Schaltfläche (btn_a) überprüfen, wenn sie selected_image oder unselected_image enthält.Angewandte Zeichen in Android überprüfen

Dann möchte ich die selected_image zu unselect_image oder unselect_image zu selected_image durch den Klick auf die Schaltfläche Bild ändern.

Mein Code so weit:

 btn_a = (ImageButton) convertView.findViewById(R.id.button_a); 
    btn_a.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      if(btn_a.getResources().getDrawable(R.id.button_a)==R.drawable.unselected_image){ 
       btn_a.setImageResource(R.drawable.selected_image); 
       }else{ 
       btn_a.setImageResource(R.drawable.unselected_image); 
       } 

     } 
    }); 

Aber dies zeigt einen Fehler btn_a.getResources().getDrawable(R.id.button_a)==R.drawable.unselected_image.

Helfen Sie mir, dies richtig zu implementieren.

EDIT:

@Override 
public View getView(int position, View convertView, ViewGroup parent) {  
    if (convertView == null) { 
     inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.list_view_cell, null); 
    } 
    btn_a = (ImageButton) convertView.findViewById(R.id.button_a); 
    btn_a.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      Drawable drawable = favourite.getDrawable(); 
      if(drawable.getConstantState().equals(context.getResources().getDrawable(R.drawable.selected_image).getConstantState())){ 
       btn_a.setImageResource(R.drawable.unselected_image); 
      }else{ 
       btn_a.setImageResource(R.drawable.selected_image); 
      } 
    return convertView; 
} 
+0

Hat es funktioniert oder nicht @tenten ?? –

Antwort

0

Versuchen Sie, diese

hey Kontext-Objekt erstellen erste

in Ihrer Klasse Globally diese Deklarieren

Context context 

fügen Sie dann Nach thiss

btn_a = (ImageButton) convertView.findViewById(R.id.button_a); 
btn_a.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     Drawable drawable = btn_a.getDrawable(); 
    if (drawable.getConstantState().equals(context.getResources().getDrawable(R.drawable.unselected_image).getConstantState())){ 
    //Do your work here 
     } 
    } 
}); 
+0

'if (drawable.getConstantState(). Equals (getResources(). GetDrawable (R.drawable.unselected_image) .getConstantState())) {' zeigt Fehler an – tenten

+0

können Sie Ihren Fehler beheben? –

+0

zeigt dies: die Methode getResources() ist für den Typ new View.onclickListner – tenten

0

Try this:

btn_a = (ImageButton) convertView.findViewById(R.id.button_a); 
    btn_a.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) 
     { 
      Bitmap b1 = ((BitmapDrawable)btn_a.getDrawable()).getBitmap(); 
      Bitmap unselected_image = ((BitmapDrawable)context.getResources().getDrawable(R.drawable.unselected_image)).getBitmap(); 
      Bitmap selected_image = ((BitmapDrawable)context.getResources().getDrawable(R.drawable.selected_image)).getBitmap(); 
      // You will need minimum API level as 12 for using this sameAs function 
      if(b1.sameAs(unselected_image)) 
      { 
       btn_a.setImageResource(R.drawable.selected_image); 
      }else{ 
       btn_a.setImageResource(R.drawable.unselected_image); 
      } 

     } 
    }); 

dies Ihr Problem lösen wird. Ich vergleiche hier Bitmaps .. !!

EDIT 1:

eine Integer-Arraylist deklarieren:

ArrayList<Integer> favList = new ArrayList<>(); 

initialisieren es in Ihrem Konstruktor:

for (int i = 0; i < list.size() ; i++) { 
     favList.add(R.drawable.unselected_image); 
    } 

ändern getView wie folgen aus:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if (convertView == null) { 
     inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.list_view_cell, null); 
    } 
    btn_a = (ImageButton) convertView.findViewById(R.id.button_a); 
    btn_a.setTag(position); 
    btn_a.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      Drawable drawable = favourite.getDrawable(); 
      if (drawable.getConstantState().equals(context.getResources().getDrawable(R.drawable.selected_image).getConstantState())) { 
       favList.set((Integer)v.getTag(),R.drawable.unselected_image); 
      } else { 
       favList.set((Integer)v.getTag(),R.drawable.selected_image); 
      } 
      notifyDataSetChanged(); 

     } 
    } 
    favourite.setImageResource(favList.get(position)); 
    return convertView; 
} 
+0

zeigt dies: Die Methode getResources() ist für den Typ new View.onclickListner nicht eindeutig – tenten

+0

Haben Sie Kontext-Objekt ?? Ich denke das ist dein Adaptercode richtig ?? –

+0

Ja, ich habe Kontextobjekt. Ja Adaptercode. – tenten

Verwandte Themen