2014-06-17 2 views
-1

사용자 지정 목록보기를 만들었으며 각 행에 대해 onItemClick Listener를 추가하려고했지만 아무런 문제없이 수행하는 방법을 모릅니다. 다음은 코드입니다. ListView의 별도 개체를 수동으로 만든 다음 OnitemClick Listener를 추가하여이 작업을 시도했지만 작동하지 않습니다. Android customListView의 각 행에 대해 OnItemListener를 추가하는 방법은 무엇입니까?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/bg_main" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.saadreviews.health_plus.Calories_Activity$PlaceholderFragment" > 

<TextView 
    android:id="@+id/txtv_calories" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="12dp" 
    android:layout_marginTop="3dp" 
    android:text="Total Calories = " 
    android:textSize="21sp" 
    android:textColor="#006600" 
/> 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/txtv_calories" 
    android:layout_marginTop="5dp" 
    android:background="@drawable/line" /> 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="317dp" 
    android:layout_alignLeft="@+id/imageView1" 
    android:layout_below="@+id/imageView1" 
    android:layout_marginTop="14dp" 
    android:background="@drawable/bg_list" > 

</ListView> 

<ImageView 
    android:id="@+id/bttn_reset" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:onClick="reset" 
    android:background="@drawable/custom_reset" /> 

다음은 javaFile입니다.

public class Calories_Activity extends ListActivity { 

ListView lv; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_calories); 
this.getActionBar().hide(); 
setListAdapter(new MyAdapter(this, android.R.layout.simple_list_item_1, R.id.textView_food, getResources().getStringArray(R.array.food))); 

setListAdapter(new MyAdapter(this, 
       android.R.layout.simple_list_item_1, R.id.textView_calories, 
       getResources().getStringArray(R.array.calories))); 

    } 

    public void reset(View view) 
{ 
      Toast.makeText(getBaseContext(), 
      "Reset", Toast.LENGTH_SHORT).show(); 
} 


    private class MyAdapter extends ArrayAdapter<String>{ 

     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[] items = getResources().getStringArray(R.array.food); 
      String[] calo = getResources().getStringArray(R.array.calories); 

      ImageView iv= (ImageView) row.findViewById(R.id.imageView1); 
      TextView tv = (TextView) row.findViewById(R.id.textView_food); 
      TextView tv1 = (TextView) row.findViewById(R.id.textView_calories); 

      tv.setText(items[position]); 
      tv1.setText(calo[position]); 

      if(items[position].equals("Apple")) 
      { 
       iv.setImageResource(R.drawable.apple); 
      } 
      else if(items[position].equals("Burger")) 
      { 
       iv.setImageResource(R.drawable.burger); 
      } 
      else if(items[position].equals("Mango")) 
      { 
       iv.setImageResource(R.drawable.mango); 
      } 
      else if(items[position].equals("Orange")) 
      { 
       iv.setImageResource(R.drawable.orange); 
      } 
      else if(items[position].equals("Pizza")) 
      { 
       iv.setImageResource(R.drawable.pizza); 
      } 


      return row; 
     } 



    } 

    public boolean onCreateOptionsMenu(Menu menu) { 

     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.calories_, menu); 
     return true; 
    } 

    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     finish(); 
    } 

    @Override 
    public void onBackPressed() { 
     // TODO Auto-generated method stub 
     Intent i2 = new Intent(Calories_Activity.this, Father_Activity.class); 
     startActivity(i2); 

    } 

} 
+0

원시 레이아웃 파일을 보여줄 수 있습니까? list_item 레이아웃? –

+0

다음은 코드입니다. onitemclick 리스너를 추가하도록 도와주세요. 그냥 토스트 아이템의 이름. http://snk.to/f-ct3aoijt –

답변

0

유 iv..setonclickListener (새 OnClicklisten)을 수행 할 수 있습니다 당신이 ListActivity를 사용하는 것처럼 위치에 따라 당신이

protected void onListItemClick (ListView l, View v, int position, long id) 

Added in API level 1 
This method will be called when an item in the list is selected. Subclasses should override. Subclasses can call getListView().getItemAtPosition(position) if they need to access the data associated with the selected item. 

Parameters 
l The ListView where the click happened 
v The view that was clicked within the ListView 
position The position of the view in the list 
id The row id of the item that was clicked 
+0

코드는 다음과 같습니다. onitemclick 리스너를 추가하도록 도와주세요. 그냥 토스트 아이템의 이름. –

+0

코드는 다음과 같습니다. onitemclick 리스너를 추가하도록 도와주세요. 그냥 토스트 아이템의 이름. http://snk.to/f-ct3aoijt –

+0

문제를 해결 했습니까 ?? @MeharSaadAhsanJhawari – Meghna

0

당신은 Calories_Activity에서 onListItemClick을 대체 할 수 있습니다. // 이벤트를 클릭하고

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) {}' 
+0

코드는 다음과 같습니다. onitemclick 리스너를 추가하도록 도와주세요. 그냥 토스트 아이템의 이름. http://snk.to/f-ct3aoijt –

+0

@MeharSaadAhsanJhawari는 무엇이 잘못되었는지 알려줍니다. 당신이 뭘 시도했는지 – Raghunandan

+0

(예를 들어, 클릭 한 항목의 이름에 Show Toast) onitemclick listener를 추가하려고 시도했지만 목록보기 작업 (칼로리)을 열면 응용 프로그램이 다운 됨 –

0

필요가 무엇을 할 수 당신은 방법을 onListItemClick 대체 할 수 있습니다 image..or에

listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Toast.makeText(getApplicationContext(), "Clciked", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

그러나 u는 어댑터 클래스들을 추가 할 필요가 있으므로 때로는 setonitemclick doesnot Main 클래스에서 작동

+0

코드는 다음과 같습니다. onitemclick 리스너를 추가하도록 도와주세요. 그냥 토스트 아이템의 이름. [링크] http://snk.to/f-ct3aoijt –

관련 문제