2014-09-29 5 views
0

Я делаю пользовательский ListView. Я установил пользовательский адаптер whinch, который я передал во Фрагменте, который содержит ListView, но когда я пытаюсь установить событие click на элементах списка, он не отвечает.Событие Click на ListView не отвечает

Это функция onCreateView из fragement

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    final View v = (View) inflater.inflate(R.layout.fragment_club, container, false); 

    listView = (ListView) v.findViewById(R.id.list); 

    c = new CustomListAdapter(this, clubList); 
    listView.setAdapter(c); 

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

       Log.i("Infox", "KRIM"); 
      } 
     }); 

    return v ; 
} 

И это мой пользовательский адаптер:

public class CustomListAdapter extends BaseAdapter { 
private Fragment fragment; 
private LayoutInflater inflater; 
private List<Club> cItems; 
ImageView img; 
Context context; 
ListView lv; 

public CustomListAdapter(Fragment fragment, List<Club> cItems) { 
    this.fragment = fragment; 
    this.cItems = cItems; 
} 

@Override 
public int getCount() { 
    return cItems.size(); 
} 

@Override 
public Object getItem(int location) { 
    return cItems.get(location); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

public static Bitmap getBitmapFromURL(String src) { 
    try { 
     Log.e("src", src); 
     URL url = new URL(src); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoInput(true); 
     connection.connect(); 
     InputStream input = connection.getInputStream(); 
     Bitmap myBitmap = BitmapFactory.decodeStream(input); 
     Log.e("Bitmap","returned"); 
     return myBitmap; 
    } catch (IOException e) { 
     e.printStackTrace(); 
     Log.e("Exception",e.getMessage()); 
     return null; 
    } 
} 

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

    if (inflater == null) { 
     context = fragment.getActivity(); 

     inflater = (LayoutInflater) LayoutInflater.from(context); 
    } 

    if (convertView == null) 
     convertView = inflater.inflate(R.layout.list_row, null); 

    img = (ImageView) convertView.findViewById(R.id.thumbnail); 
    TextView nomC = (TextView) convertView.findViewById(R.id.title); 
    TextView slogan = (TextView) convertView.findViewById(R.id.slogan); 
    TextView descipline = (TextView) convertView.findViewById(R.id.desc); 
    Button join = (Button) convertView.findViewById(R.id.joinB); 


    View v = (View) inflater.inflate(R.layout.fragment_club,parent,false); 

    lv = (ListView) v.findViewById(R.id.list); 

    // getting movie data for the row 
    final Club m = cItems.get(position); 


    //Set the button click event 
    join.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      Toast.makeText(context, 
        m.getNomC(), Toast.LENGTH_LONG).show(); 
     } 
    }); 

    /* lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
           long id) { 

      Log.i("Infox", "KRIM"); 
     } 
    });*/ 


    // thumbnail image 
    img.setImageBitmap(getBitmapFromURL(m.getThumbnailUrl())); 

    // Nom du club 
    nomC.setText(m.getNomC()); 

    // Slogan Club 
    slogan.setText(m.getSlogan()); 

    //Disciplines des clubs 
    descipline.setText(m.getDesc()); 


    return convertView; 
} 

}

PS: как вы видите в комментируемом код Я пытался сделать это в своем пользовательском адаптере, но я думаю, что безнадежная операция

+0

Вы должны отключить щелчок слушателя для вас Баттона «joinB», чтобы получить onItemClickListiner работать. :) – Arslan

+0

Почему вы используете внутренний адаптер ListView. –

+0

Я не могу сделать больше кнопки в Activity/Fragment? –

ответ

1

Если вы хотите достичь ItemClick, а также ButtonClick, то сделайте то же самое для convertView, как вы сделали, чтобы присоединиться к кнопке. Impliment onClickListener для преобразования.

convertView.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 

     Log.i("Infox", "KRIM"); 
    } 
}); 
+0

И если я хочу добавить эффект на событие click? –

+0

Вы хотите добавить эффект к чему? –

+0

на фоне предмета, когда он нажал! –

1

Вы должны удалить OnClick от адаптера и после этого вы должны использовать setOnItemClickListener

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