2012-02-20 2 views
0

다른 클래스에서 채울 필요가있는 listView를 사용하여 앱을 만들려고합니다.이 사이트를 기본적으로 따라갑니다 : http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/하지만 어떻게 든 내 어댑터가 제대로 작동하지 않습니다 ... 그리고 채우지 마십시오 내 listView ...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

귀하의 주요 방법과 가장 가벼운 부분을 게시하십시오. 'fillLeftMenu lmenu = 새로운 fillLeftMenu (메뉴);'그게 무슨 뜻입니까? – 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 방법에서 갱신되었다. 여기에 루프가 전혀 필요 없습니다.

관련 문제