2011-02-05 8 views
0

私の親アクティビティのダイアログを呼び出します。ダイアログは別のアクティビティにあります...アダプタ "setListAdapter(new ListViewAdapter(this));"を設定中にエラーが発生しました...いずれかのplzは私カスタムダイアログリストビューでの問題


package org.me.dailogfrmchildact; 



/** Class Must extends with Dialog */ 
/** Implement onClickListener to dismiss dialog when OK Button is pressed */ 
public class CustomizeDialog extends Dialog implements OnClickListener { 
    Button okButton; 

    public CustomizeDialog(Context context) { 
     super(context); 
     /** 'Window.FEATURE_NO_TITLE' - Used to hide the title */ 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     /** Design the dialog in main.xml file */ 
     setContentView(R.layout.main); 

     okButton = (Button) findViewById(R.id.OkButton); 
     okButton.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     /** When OK Button is clicked, dismiss the dialog */ 
     if (v == okButton){ 
      ListviewContent.add("sadas"); 
     ListviewCount.add("dasasd"); 
     setListAdapter(new ListViewAdapter(this)); 

     } 

    } 
private static ArrayList<String> ListviewContent = new ArrayList<String>(); 
    private static ArrayList<String> ListviewCount = new ArrayList<String>(); 

    private static class ListViewAdapter extends BaseAdapter { 

     private LayoutInflater mInflater; 

     public ListViewAdapter(Context context) { 

      mInflater = LayoutInflater.from(context); 

     } 

     public int getCount() { 
      return ListviewContent.size(); 
     } 

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

     public String getCount(int position) { 
      return ListviewCount.get(position); 
     } 

     public String[] getSizeType(int position) { 
      String[] str = new String[2]; 
      str[0] = ListviewContent.get(position); 
      str[1] = ListviewCount.get(position); 
      return str; 
     } 

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

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

      ListContent holder; 

      if (convertView == null) { 
       convertView = mInflater.inflate(R.layout.listviewinflate, null); 
       holder = new ListContent(); 
       holder.text = (TextView) convertView.findViewById(R.id.TextView01); 
       holder.text.setCompoundDrawables(null, null, null, null); 
       holder.count = (TextView) convertView.findViewById(R.id.TextView02); 
       holder.count.setCompoundDrawables(null, null, null, null); 
       convertView.setTag(holder); 
      } else { 

       holder = (ListContent) convertView.getTag(); 
      } 

      holder.text.setText(ListviewContent.get(position)); 
      holder.count.setText(ListviewCount.get(position)); 
      return convertView; 
     } 

     static class ListContent { 

      TextView text; 
      TextView count; 
     } 
    } 

} 

mainactivity.class

CustomizeDialog.classを支援することができます10

答えて

0

私はここで答えを示しています。最初の答えに従って、いつものように名前付きリストビューを作成します。

public CustomizeDialog(Context context) { 
     super(context); 

// access the context again... 


final Context cs=context; 

//then use this "cs" to set the adapter... 


list.setAdapter(new ListViewAdapter(cs)); 


//... 
} 
0

私が知る限り、SetListAdapterはクラスListViewの方法です。 だから、これはActivityの方法ですので、あなただけのダイアログでsetListAdapterを呼び出すことはできませんlistActivityを拡張する必要がある、またはlistview

+0

public CustomizeDialog(コンテキストコンテキスト){ super(コンテキスト); – jerith

1

のオブジェクトからそれを呼び出します。しかし、あなたがすべきことはあなたのレイアウトでリストビューを作成する(今それがmainと呼ばれる)と、それにIDを割り当てている。

<ListView 
android:id="@+id/list" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/> 

今、あなたはコードであなたのListViewを見つけ、それ用のアダプタを設定することができます。

ListView list = (ListView) findViewById(R.id.list); 
list.setAdapter(new ListViewAdapter(this)); 
+0

@malcolm ..私はウルのアイデアを試みましたが、同じ問題が残っています... – jerith

+0

"this"の代わりにコンテキストのインスタンスを使用しました..今、私は結果を得ました。 – jerith

+0

ありがとうございます.. – jerith