2012-02-20 11 views
0

私は別のクラスからいっぱいにする必要があるlistViewでアプリケーションをしようとしています...私は基本的にこのサイトに従います:http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/しかし、どういうわけか私のアダプタは正しく動作しません...そして、私のリストビュー...listViewが塗りつぶされていませんか?

私はメインクラスから新しいオブジェクトを作成します:fillLeftMenu lmenu = new fillLeftMenu(menu);それは間違っていないかどう

私は、活動を開始したため、この行を使用:

<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クラスです:私のAndroidManifest.xmlで

startActivity(new Intent("com.yahya.training.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

あなたのメインのメソッドとmenifestを投稿してください。 'fillLeftMenu lmenu = new fillLeftMenu(menu);'それはどういう意味ですか? – Shaiful

+0

**チュートリアル**に従ってください。クラス名を大文字にしてみてください。 – Shaiful

+0

あなたはこのリンクに従うことができます。http://www.vogella.de/articles/AndroidListView/article.html#listadvanced_interactive] – OnkarDhane

答えて

0

あなたはreturnResのループに詰まっていると思います。

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

Left変数lAdapterに設定されたデータであり、それはすでにgetIndexメソッドで更新されました。ここにループは必要ありません。

0

Activityのオブジェクトを作成する必要はありません。最初にActivityの仕組みを学ぶ必要があります。 Activity Fundamental

はこれを見てください - Creating an object of Android Activity class

そしてチュートリアル正確に従ってみてください。

ここから始めることができる他のチュートリアルです。 http://www.vogella.de/articles/AndroidListView/article.html

Android SDKディレクトリにサンプルがあります。

関連する問題