2012-02-20 118 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方法更新。这里根本不需要循环。