2012-04-22 60 views
0

我有一個圖像和文本列表作爲其item.i已編寫onlistitemclick方法的代碼,但是當我單擊列表項時什麼也沒有發生......... 在這個文件中我有
android listitem

//main.java 
package abhi.tv;<br/> 
import android.app.ListActivity;<br/> 
import android.content.Context;<br/> 
import android.os.Bundle;<br/> 
import android.view.LayoutInflater;<br/> 
import android.view.View;<br/> 
import android.view.View.OnClickListener;<br/> 
import android.view.ViewGroup;<br/> 
import android.widget.AdapterView;<br/> 
import android.widget.AdapterView.OnItemClickListener;<br/> 
import android.widget.ArrayAdapter;<br/> 
import android.widget.ImageView;<br/> 
import android.widget.ListView;<br/> 
import android.widget.TextView;<br/> 
import android.widget.Toast;<br/> 
public class IndiatvActivity extends ListActivity { 
    /** Called when the activity is first created. */ 
    @Override 



    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     MyAdapter ad=new MyAdapter(this,android.R.layout.simple_list_item_1,R.id.channel_name,getResources().getStringArray(R.array.channels)); 

     setListAdapter(ad); 




    } 







     private class MyAdapter extends ArrayAdapter<String> implements OnItemClickListener{ 

     public MyAdapter(Context context, int resource, int textViewResourceId, 
       String[] strings) { 
      super(context, resource, textViewResourceId, strings); 
      // TODO Auto-generated constructor stub 
     } 


     public View getView(int position,View convertView,ViewGroup parent){ 
      LayoutInflater inflater=(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View row=inflater.inflate(R.layout.list_item,parent,false); 
      String chann[]=getResources().getStringArray(R.array.channels); 
      ImageView iv=(ImageView) row.findViewById(R.id.logo); 
      TextView tv=(TextView) row.findViewById(R.id.channel_name); 
      tv.setText(chann[position]); 
      if(chann[position].equalsIgnoreCase("star plus")) 
       iv.setImageResource(R.drawable.star_plus); 
      else if(chann[position].equalsIgnoreCase("sony tv")) 
       iv.setImageResource(R.drawable.sony_tv); 
      else if(chann[position].equalsIgnoreCase("sahara one")) 
       iv.setImageResource(R.drawable.sahara_one); 
      else if(chann[position].equalsIgnoreCase("zee tv")) 
       iv.setImageResource(R.drawable.zee_tv); 
      else if(chann[position].equalsIgnoreCase("colors")) 
       iv.setImageResource(R.drawable.colors_tv); 
      else if(chann[position].equalsIgnoreCase("mtv")) 
       iv.setImageResource(R.drawable.mtv); 
      else if(chann[position].equalsIgnoreCase("9x india")) 
       iv.setImageResource(R.drawable.ninex); 
      else if(chann[position].equalsIgnoreCase("star one")) 
       iv.setImageResource(R.drawable.star_one); 
      else if(chann[position].equalsIgnoreCase("sab tv")) 
       iv.setImageResource(R.drawable.sab_tv); 
      else if(chann[position].equalsIgnoreCase("ndtv imagine")) 
       iv.setImageResource(R.drawable.ndtv_imagine); 
      return row; 
     } 
     @Override 
     public void onItemClick(AdapterView<?> l, View v, int position, 
       long id) { 
      // TODO Auto-generated method stub 
      //super.onItemClick(l, v, position, id); 
      String chann[]=getResources().getStringArray(R.array.channels); 
      Toast.makeText(IndiatvActivity.this,"hiiii xt", Toast.LENGTH_LONG); 
      Toast.makeText(IndiatvActivity.this,"this message is of"+chann[position],Toast.LENGTH_SHORT).show(); 
      android.util.Log.d("abhi"," msg:item was clicked"); 

     } 


     } 

    }** 





<br/>heres the xml code:<br/> 
//list_item.xml<br/> 
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:android1="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:focusableInTouchMode="true" 
    android:orientation="horizontal" android1:addStatesFromChildren="false"> 




    <ImageView 
     android1:id="@+id/logo" 
     android1:layout_width="100dp" 
     android1:layout_height="100dp" 
     android1:layout_alignParentLeft="true" 
     android1:layout_alignParentTop="true" 
     android1:adjustViewBounds="true" 
     android1:clickable="true" 
     android1:maxHeight="500dp" 
     android1:maxWidth="500dp" 
     android1:minHeight="500dp" 
     android1:minWidth="500dp" 
     android1:src="@drawable/colors_tv" /> 


    <TextView 
     android1:id="@+id/channel_name" 
     android1:layout_width="wrap_content" 
     android1:layout_height="wrap_content" 
     android1:layout_alignBottom="@+id/logo" 
     android1:layout_marginLeft="15dp" 
     android1:layout_toRightOf="@+id/logo" 
     android1:text="Large Text" 
     android1:textAppearance="?android:attr/textAppearanceLarge" /> 

</RelativeLayout> 




<br/> 
<br/> 
<br/> 
//main.xml 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
    </ListView> 

</LinearLayout> 

回答

0
setOnItemClickListener() 
在主要活動

不是適配器 它會回報你特定的行

:在繪製,華電國際文件夾 和項目在XML文件的文本 繼承人的代碼圖像資源

然後你會得到項目點擊.....

+0

我試過,但它不工作 – 2012-04-22 17:23:30

2

這不會工作,因爲您已經使用了一個簡單的列表適配器,在列表視圖中一起添加圖像和文本,您必須定義您自己的自定義適配器並使用它。

檢查此link編寫您自己的自定義適配器

相關問題