2012-02-20 120 views
0

我想要做一個應用程序與listView,這是需要從另一個類填充......我基本上遵循這個網站:http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/但不知何故我的適配器不能正常工作......而且不要填寫我的listView ...listView沒有被填充?

我從我的主類創建一個新的對象,如:fillLeftMenu lmenu = new fillLeftMenu(menu);

我用這行已經開始活動,如果它沒有錯:

startActivity(new Intent("com.yahya.training.FILLLEFTMENU")); 

在我的AndroidManifest.xml中,我添加了這個以下行:

<activity 
     android:name=".fillLeftMenu" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="com.yahya.training.FILLLEFTMENU" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

而且fillLeftMenu類:

public class fillLeftMenu extends ListActivity { 

private ProgressDialog myProgressDialog = null; 
private View menu; 
ImageView findLocation; 
Spinner cityList; 
ListView leftList; 
String [] textIndex; 
Drawable [] imageIndex; 
ArrayList<LeftListItems> Left; 
listAdapter lAdapter; 

public fillLeftMenu(View Lmenu) { 
    this.menu = Lmenu; 
} 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    findLocation = (ImageView) menu.findViewById(R.id.image_findLocation); 
    leftList = (ListView) menu.findViewById(R.id.list); 

    // add items to listView 
    Left = new ArrayList<LeftListItems>(); 
    textIndex = new String[] {"Bugünün Fırsatları", "Son Dakika Bonusları", "Kadın", "Aile", "Çocuk", "Alışveriş", "Şehirden Kaçış", "Kışa Özel"}; 
    imageIndex = new Drawable[] {leftList.getResources().getDrawable(R.drawable.kucukicon_01),leftList.getResources().getDrawable(R.drawable.kucukicon_02),leftList.getResources().getDrawable(R.drawable.kucukicon_03),leftList.getResources().getDrawable(R.drawable.kucukicon_04),leftList.getResources().getDrawable(R.drawable.kucukicon_05),leftList.getResources().getDrawable(R.drawable.kucukicon_06),leftList.getResources().getDrawable(R.drawable.kucukicon_07),leftList.getResources().getDrawable(R.drawable.kucukicon_08)}; 

    lAdapter = new listAdapter(menu.getContext(), R.layout.list_item, Left); 
    leftList.setAdapter(lAdapter); 

    Runnable viewOrders = new Runnable(){ 
     public void run() { 
      getIndex(); 
     } 
    }; 

    Thread thread = new Thread(null, viewOrders, "MagentoBackground"); 
    thread.start(); 
    myProgressDialog = ProgressDialog.show(fillLeftMenu.this,"Please wait...", "Retrieving data ...", true); 

    leftList.setOnItemClickListener(new OnItemClickListener() { 

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

    }); 

} 

private Runnable returnRes = new Runnable() { 
    public void run() { 
     if(Left != null && Left.size() > 0){ 
      lAdapter.notifyDataSetChanged(); 
      for(int i=0;i<Left.size();i++) 
      lAdapter.add(Left.get(i)); 
     } 
     myProgressDialog.dismiss(); 
     lAdapter.notifyDataSetChanged(); 
    } 
}; 

private void getIndex() { 
    try{ 
     LeftListItems item = new LeftListItems(); 
     for(int i=0; i<textIndex.length; i++) { 
      item.setText(textIndex[i]); 
      item.setImage(imageIndex[i]); 
      Left.add(item); 
     } 
    } 
    catch (Exception e) { 
     Log.e("BACKGROUND_PROC", e.getMessage()); 
    } 
    runOnUiThread(returnRes);  
} 

private class listAdapter extends ArrayAdapter<LeftListItems> { 

    private ArrayList<LeftListItems> items; 
    private Context ctx; 

    public listAdapter(Context ctx, int textViewResourceId, ArrayList<LeftListItems> items) { 
     super(ctx, textViewResourceId, items); 
     this.ctx = ctx; 
     this.items = items; 
    } 


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

     View v = convertView; 
     if (v == null) { 
      // LayoutInflater inflater = LayoutInflater.from(ctx); 
      // v = inflater.inflate(R.layout.list_item, null); 
      LayoutInflater vi = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.list_item, null); 
     } 

     LeftListItems index = items.get(position); 
     if(index != null) { 
      TextView text = (TextView) v.findViewById(R.id.text); 
      ImageView img = (ImageView) v.findViewById(R.id.icon); 
      if(text != null) 
       text.setText(index.getText()); 
      if(img != null) 
       img.setBackgroundDrawable(index.getImage()); 
     } 

     return v; 
    } 

} 

} 
+1

發佈你的主要方法和清單。 'fillLeftMenu lmenu = new fillLeftMenu(menu);'這是什麼意思。 – Shaiful 2012-02-20 08:43:15

+0

完全按照教程**。並嘗試使您的班級名稱大寫。 – Shaiful 2012-02-20 08:47:37

+0

你可以按照這個鏈接http://www.vogella.de/articles/AndroidListView/article.html#listadvanced_interactive] – OnkarDhane 2012-02-20 08:56:40

回答

0

我覺得你陷入了returnRes中的循環。

for(int i=0;i<Left.size();i++) 
    lAdapter.add(Left.get(i)); 

Left可變數據在lAdapter設置和它已經在getIndex方法更新。這裏根本不需要循環。