2012-03-08 3 views
0

Я написал следующее, чтобы показать свои данные в виде сетки. Это процедура моего кода.Android, как управлять gridview?

В OnCreate()

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_newslist); 
// Initializing NewsAdapter in order to loading the list of NEWS items 
    newsAdapter = new NewsAdapter(this); 
// Initializing grid view to show news 
     gridView = (GridView) findViewById(R.id.news_gridview); 
     gridView.setAdapter(newsAdapter); 
     gridView.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       Toast.makeText(NewsList.this, "" + position, Toast.LENGTH_SHORT).show(); 
      } 
     }); 

Тогда в OnStart() я буду получать данные XML с сервера затем разобрать его и конечные сгенерированные данные будут храниться в «parsedList» (100% У меня есть данные в тиа переменная, потому что я видел ее в logcat).

@Override 
    protected void onStart() { 
     super.onStart(); 
     String strNewsContent = "***"; 

     ... 

     newsAdapter.setData(parsedList); 
     newsAdapter.notifyDataSetChanged(); 
    } 

наконец это мой "NewsAdapter":

public class NewsAdapter extends BaseAdapter { 

    private LayoutInflater myInflater; 
    private NewsFeedItemList itemList; 


    public NewsAdapter(Context c) { 
     myInflater = LayoutInflater.from(c); 
    } 

    public void setData(NewsFeedItemList newsFeedItemList){ 
     itemList = newsFeedItemList; 

     Log.i("NewsAdapter", "Parsed list passed to the adapter."); 
    } 

    @Override 
    public int getCount() { 
     return 0; 
    } 

    @Override 
    public Object getItem(int position) { 
     return position; 
    } 

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

    public View getView(int position, View convertView, ViewGroup parent){ 
     ViewHolder holder; 

     if (convertView == null) { 
      convertView = myInflater.inflate(R.layout.grid_news, null); 
      holder = new ViewHolder(); 
      holder.ivIcon = (TextView) convertView.findViewById(R.id.news_icon); 
      holder.tvLabel = (TextView) convertView.findViewById(R.id.news_label); 

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

     holder.ivIcon.setText(itemList.getImage().get(position)); 
     holder.tvLabel.setText(itemList.getTitle().get(position)); 

     Log.i("Position is>>>>:", Integer.toString(position)); 

     return convertView; 
    } 

    static class ViewHolder { 
     TextView ivIcon; 
     TextView tvLabel; 
    } 

} 

формат "grid_news", как это

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/news_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:contentDescription="@string/menu_contentdescription" 
     android:layout_centerHorizontal="true" /> 

    <TextView 
     android:id="@+id/news_label" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:textColor="#ffffff" 
     android:textSize="15sp" 
     android:textStyle="bold" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:paddingBottom="10dip" /> 

</RelativeLayout> 

Я понятия не имею, почему я не могу видеть результат в моем эмуляторе/устройстве !!! Буду благодарен, если кто-нибудь может мне помочь.

ответ

2

Я думаю, что это из-за getCount(), возвращающего 0; не должен ли быть itemList.size()? в новостях NewsAdapter.

+0

Yap, Правильно. Боже мой, через 2 часа ты это сделал. Спасибо. – Hesam

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