का पता लगते ही नहीं क्लिक करें मैं एक GridView
उस में से निम्नलिखित है LinearLayout
:एंड्रॉयड GridView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<GridView
android:id="@+id/songs_grid"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:columnWidth="250dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:verticalSpacing="10dp" />
</LinearLayout>
GridView
डेटा एक कस्टम एडेप्टर द्वारा आपूर्ति की है (एक सरल ViewHolder
उपयोग करते हुए):
public class SongsAdapter extends BaseAdapter {
private Context context;
private LayoutInflater mInflater;
private ArrayList<Song> songList;
public SongsAdapter(Context context, ArrayList<Song> songList)
{
this.context = context;
this.songList = songList;
mInflater = LayoutInflater.from(this.context);
}
@Override
public int getCount()
{
return songList.size();
}
public Object getItem(int position)
{
return songList.get(position);
}
public long getItemId(int position)
{
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
SongViewHolder viewHolder;
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.song_list_item, null);
viewHolder = new SongViewHolder();
//Get Views from Layout Template
viewHolder.AlbumArt = (ImageView)convertView.findViewById(R.id.albumart);
viewHolder.Title = (TextView)convertView.findViewById(R.id.title);
viewHolder.Artist = (TextView)convertView.findViewById(R.id.artist);
}
else
{
viewHolder = (SongViewHolder) convertView.getTag();
}
Song song = songList.get(position);
Bitmap bitmap = song.getAlbumArt();
Bitmap missing = BitmapFactory.decodeResource(context.getResources(), R.drawable.albumart_missing);
Bitmap albumArt = bitmap == null ? missing : bitmap;
viewHolder.AlbumArt.setImageBitmap(albumArt);
viewHolder.Title.setText(song.getTitle());
viewHolder.Artist.setText(song.getArtist());
convertView.setTag(viewHolder);
return convertView;
}
}
जब ऐप शुरू होता है तो इसे गाने की एक सूची मिलती है (एक्सएमएल से लेकिन वर्तमान में मैन्युअल रूप से दर्ज की गई सूची का उपयोग करके) और मेरे एडाप्टर को पास करता है और फिर OnItemClickListener
:
GridView gridView = (GridView) findViewById(R.id.songs_grid);
gridView.setAdapter(new SongsAdapter(this, fk.getSongList()));
gridView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
LinearLayout layout = (LinearLayout)view;
TextView songTitle = (TextView)layout.findViewById(R.id.song_title);
Song song = fk.getSong((String) songTitle.getText());
if(song != null)
{
Intent play = new Intent(getBaseContext(), Play.class);
startActivity(play);
}
}
});
जब मैंने पहली बार इस कोड को लागू किया, तो यह सब ठीक काम किया, और मुझे यकीन है कि मैंने कुछ भी नहीं बदला है। मैं सॉन्ग टाइटल स्क्रॉल के लिए एक मार्की फैशन में टेक्स्ट बनाने की कोशिश कर रहा था अगर यह बहुत लंबा था, लेकिन यह काम नहीं कर सका। इस चरण के दौरान मैंने पाया कि क्लिक काम करना बंद कर दिया। अब मैंने उस कोड को हटा दिया है (मुझे विश्वास है), लेकिन यह अभी भी विफल रहता है।
जब मैं स्पर्श/क्लिक करता हूं (जिसे आप इसे कहते हैं) कुछ भी नहीं होता है। कोई त्रुटि नहीं है।
क्या मेरी कोड के साथ गलत है कि इस मुद्दे का कारण होता है?
मुझे पूरी तरह से यकीन नहीं है, इसलिए मैं सिर्फ एक टिप्पणी के रूप में पोस्ट करूंगा; ग्रिडव्यू से क्लिक करने योग्य-विशेषता हटाएं। मुझे लगता है कि यह दृश्य में आइटम्स के लिए क्लिक-इवेंट ओवरराइड कर सकता है- – Jave
यह जांचने के लिए लॉग ऑन करने का प्रयास करें कि ITemClick कहलाता है या नहीं। यदि हां, तो गीत पैकेज का मूल्य देखें। –
@ दुख की बात नहीं है, मुझे विश्वास है कि मैंने इसे जोड़ने और इसे काम करने के लिए जोड़ा है, लेकिन अभी भी काम नहीं कर रहा है! :(धन्यवाद हालांकि! – neildeadman