2012-08-13 41 views
1

我想显示一个列表,当我在该位置按下它时,我想显示一个不存在的图像并更改该行的字体。所以首先我有一个简单的列表中的XML文件,然后另一个XML的每一行,这一个:OnListIemClick为每一行设置可见性

<ImageView 
    android:id="@+id/icono" 
    android:layout_gravity="center" 
    android:layout_marginRight="5dip"/> 

<RelativeLayout 
    android:id="@+id/RelativeLayout1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_centerVertical="true" 
     android:text="TextView" /> 

    <ImageView 
     android:id="@+id/image_tick_ingred" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="false" 
     android:layout_alignParentLeft="false" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="false" 
     android:layout_alignRight="@id/textView1" 
     android:layout_centerVertical="true" 
     android:src="@android:drawable/presence_online" /> 
</RelativeLayout> 

所以这是代码的每一行,包含在左边的图像再文字,最后是右侧的另一张图片。和Java代码:

public class TabIngred extends ListActivity { 

    ImageView img; 

public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.rellenas_ingr); //the list xml layout 

     Bundle extras = getIntent().getExtras(); //get data 
     if (extras != null) { 
      String ingredientesLista[] = extras.getStringArray("ingredientesLista"); 
      int[] ingredientesImagen=extras.getIntArray("ingredientesImagen"); 

      setListAdapter (new IngredienteAdapter(this, R.layout.rellenas_ingr_fila, ingredientesLista, ingredientesImagen)); 
      getListView().setChoiceMode(2); 
     } 

} 

private class IngredienteAdapter extends ArrayAdapter<String>{ 

    private String listaIngred[]; 
    private int[] listaImagenes; 

    public IngredienteAdapter(Context context, int textViewResourceId, String ingredientesLista[], int[] ingredientesImagen) { 
     super(context, textViewResourceId, ingredientesLista); 
     this.listaIngred = ingredientesLista; 
     this.listaImagenes=ingredientesImagen; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 
     if (v == null) { 
      LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      // XML de la vista de la fila 
      v = vi.inflate(R.layout.rellenas_ingr_fila, null); //the row for the listview 
     } 
     String ingred = listaIngred[position]; 
     int imagen=listaImagenes[position]; 
     int tickImagen = R.drawable.tick_ingred;//set the image to a tick 


     if (ingred != null) { 
      TextView ttitulo = (TextView) v.findViewById(R.id.textView1); 
      if (ttitulo != null) { 
       ttitulo.setText(ingred); 
      } 
      ImageView timagen = (ImageView) v.findViewById(R.id.icono); 
      if (timagen != null) { 
       timagen.setImageResource(imagen); 
      } 
      ImageView ttick = (ImageView) v.findViewById(R.id.image_tick_ingred); 
      if (ttick != null) { 
       ttick.setImageResource(tickImagen); 
       ttick.setVisibility(View.GONE); 
      } 
     } 
     return v; 
    } 
} 

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 

    img=(ImageView)v.findViewById(R.id.image_tick_ingred); 
    TextView t= (TextView)v.findViewById(R.id.textView1); 

    if(img.getVisibility()==View.GONE){ 

     t.setTypeface(null, Typeface.BOLD); 
     img.setVisibility(View.VISIBLE); 

    }else { 
     t.setTypeface(null, Typeface.NORMAL); 
     img.setVisibility(View.GONE); 

    } 
} 
} 

所以,我定义了getview(),我把走了(那作品)的图像,但随后的OnlistItemClick()doesn't工作。首先,当我选择一个项目时,图像不可见,除此之外,我按下第一行的位置是改变字体的位置,而不是我按下的项目。

谢谢:)

+0

图像初始化消失了(我想要的),但是当我按下它并不可见 – Txispas 2012-08-19 18:50:46

回答

0

问题是我定义了getListView()。setChoiceMode(2);那是因为它没有工作,我删除了该线,并完美无缺!

谢谢毕竟!

0

onListItemClick您需要使用View

例如:

img=(ImageView)findViewById(R.id.image_tick_ingred); 
TextView t= (TextView)findViewById(R.id.textView1); 

应该

img=(ImageView)v.findViewById(R.id.image_tick_ingred); 
TextView t= (TextView)v.findViewById(R.id.textView1); 

通知v即视图点击了

+0

嗨,我编辑上面的代码,它修复的东西,但不是全部。如果我现在使用视图,它可能会排我按OK!但它似乎理解视图已经消失(loggicaly因为我定义在getview中消失了),但是当我按下它时却看不到(textview变为粗体)。如果我再次按下文字不正常:( – Txispas 2012-08-13 17:47:18

+0

某人知道......图像一直消失,当按下时它不会改变...... – Txispas 2012-08-14 13:01:14