2014-09-05 2 views
0

У меня есть список, на который я хочу дать событие с нажатием кнопки на каждой кнопке в каждой строке списка. Но этот код не работает. Дать силу близко. Пожалуйста, можете мне помочь. Я новичок в этом.onclick event on radioButton не работает

package com.example.radiogroup; 


    import java.util.ArrayList; 
    import java.util.HashMap; 

    import android.support.v7.app.ActionBarActivity; 
    import android.support.v7.app.ActionBar; 
    import android.support.v4.app.Fragment; 
    import android.app.Activity; 
    import android.content.Context; 
    import android.database.DataSetObserver; 
    import android.os.Bundle; 
    import android.view.LayoutInflater; 
    import android.view.Menu; 
    import android.view.MenuItem; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.view.ViewGroup; 
    import android.widget.AdapterView; 
    import android.widget.AdapterView.OnItemClickListener; 
    import android.widget.BaseAdapter; 
    import android.widget.Checkable; 
    import android.widget.ImageView; 
    import android.widget.ListAdapter; 
    import android.widget.ListView; 
    import android.widget.RadioButton; 
    import android.widget.TextView; 
    import android.widget.Toast; 
    import android.os.Build; 

    public class MainActivity extends Activity implements Checkable 
{ 

    private ArrayList<HashMap<String,Object>> data; 
    private ListAdapter adapter; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ListView lv=(ListView)findViewById(R.id.listView1); 
     lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
     data=new ArrayList<HashMap<String, Object>>(); 
     prepareListData(); 
     adapter = new ListAdapter(this,data); 
     lv.setAdapter(adapter); 

    /* lv.setOnItemClickListener(new OnItemClickListener() 
     { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) 
      { 

      { 
       if(position==0) 
       { 
        Toast.makeText(getApplicationContext(), "Move forward", 
     Toast.LENGTH_SHORT).show(); 
       } 


      } 
      } 

     }); */ 





    } 
    private void prepareListData() 
    { 
     HashMap<String,Object> row1=new HashMap<String,Object>(); 
     row1.put("ID",1); 
     row1.put("NAME","Taj Mahal"); 
     data.add(row1); 

     HashMap<String,Object> row2=new HashMap<String,Object>(); 
     row2.put("ID",2); 
     row2.put("NAME","Agra Fort"); 
     data.add(row2); 

     HashMap<String,Object> row3=new HashMap<String,Object>(); 
     row3.put("ID",3); 
     row3.put("NAME","Ram Baugh"); 
     data.add(row3); 

     HashMap<String,Object> row4=new HashMap<String,Object>(); 
     row4.put("ID",4); 
     row4.put("NAME","Panch Mahal"); 
     data.add(row4); 

     HashMap<String,Object> row5=new HashMap<String,Object>(); 
     row5.put("ID",5); 
     row5.put("NAME","Musamman Burj"); 
     data.add(row5); 

    } 
    class ListAdapter extends BaseAdapter 
    { 
     private Context context; 
     private ArrayList<HashMap<String,Object>> list; 
     ViewHolder holder; 



     public ListAdapter(Context context,ArrayList<HashMap<String,Object>> list){ 
       this.context = context; 
       this.list = list; 
       holder.rb.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) 
        { 
         Toast.makeText(getApplicationContext(), "Move forward", Toast.LENGTH_SHORT).show(); 

        } 
       }); 
     } 


     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return list.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return list.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 


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

       if(convertView == null){ 
        holder = new ViewHolder(); 
        convertView = LayoutInflater.from(context).inflate(R.layout.row,null,false); 
        holder.rb = (RadioButton) convertView.findViewById(R.id.radioButton1); 

        convertView.setTag(holder); 
       }else{ 
        holder = (ViewHolder) convertView.getTag(); 
       } 

       holder.rb.setText(list.get(position).get("NAME").toString()); 

      return convertView; 
     } 
     class ViewHolder 
      { 
       RadioButton rb; 
      } 

    } 
    @Override 
    public void setChecked(boolean checked) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public boolean isChecked() { 
     // TODO Auto-generated method stub 
     return false; 
    } 
    @Override 
    public void toggle() { 
     // TODO Auto-generated method stub 

    } 




} 
+0

место 'OnClikListener()' in 'getView()' .. then это сработает .. – bGorle

+0

сначала вы должны прочитать, что на самом деле представляет собой радиообъект. Сначала вам нужно создать радиогруппу. Затем вы должны установить клик прослушиватель в адаптере – kgandroid

+0

проверить ответ ans удалить из адаптера conatracter и добавить его на getview methed на адаптере –

ответ

0

использовать его на GetView Methed на адаптере

holder.rb.setOnClickListener(new OnClickListener() 
{ 

      @Override 
      public void onClick(View v) 
      { 
       Toast.makeText(getApplicationContext(), "Move forward",  Toast.LENGTH_SHORT).show(); 

      } 
     }); 

Используйте его на OnCreate Methed

lv.setOnItemClickListener(new OnItemClickListener() 
{ 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) 
    { 

    { 
     if(position==0) 
     { 
      Toast.makeText(getApplicationContext(), "Move forward "+position, Toast.LENGTH_SHORT).show(); 
     } 
    else 
    if(position==1) 
     { 
      Toast.makeText(getApplicationContext(), "Move forward "+position, 
     Toast.LENGTH_SHORT).show(); 
     } 


    } 
    } 

}); 
+0

Его работа сейчас. Спасибо naveen. –

+0

в последнем коде я тоже пишу это, но я не понимаю, но теперь понимаю, что –

+0

Я новичок в этом. Еще одна вещь, которую я хочу дать различным событиям в каждой строке, и где я должен установить для нее позицию. –

0

в конструкторе ListAdapter класса вы не инициализировать объект ViewHolder так что вы Cann» t доступа к этому классу. удалить

holder.rb.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) 
       { 
        Toast.makeText(getApplicationContext(), "Move forward", Toast.LENGTH_SHORT).show(); 

       } 
      }); 

из ListAdapter конструктора и поместить его в GetView() после класса и член инициализируется.

после

if(convertView == null){ 
       holder = new ViewHolder(); 
       convertView = LayoutInflater.from(context).inflate(R.layout.row,null,false); 
       holder.rb = (RadioButton) convertView.findViewById(R.id.radioButton1); 

       convertView.setTag(holder); 
      }else{ 
       holder = (ViewHolder) convertView.getTag(); 
      } 

в методе GetView.

Смежные вопросы