0

enter image description hereAlertDialog selectedItem爲空

我有ListwithImage列表的代碼。但是當我嘗試onclickItem與對話框顯示,但對話框顯示爲空。我實現了onclickItemListener。我試過這個沒有圖像的代碼,對話框顯示選擇的列表。但是,當我嘗試與圖像,它不會工作。

mycode的:

public class MainActivity extends Activity { 
    EditText edittext; 
    ListView listview; 

    String[] text = { "One", "Two", "Three", "Four", "Five", "Six", "Seven", 
       "Eight", "Nine", "Ten" }; 

      int[] image = { R.drawable.one, R.drawable.two, R.drawable.three, 
       R.drawable.four, R.drawable.five, R.drawable.six, R.drawable.seven, 
       R.drawable.eight, R.drawable.nine, R.drawable.ten }; 

      int textlength = 0; 

      ArrayList<String> text_sort = new ArrayList<String>(); 
      ArrayList<Integer> image_sort = new ArrayList<Integer>(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     edittext = (EditText) findViewById(R.id.EditText01); 
      listview = (ListView) findViewById(R.id.ListView01); 
      listview.setAdapter(new MyCustomAdapter(text, image)); 

      edittext.addTextChangedListener(new TextWatcher() 
      { 

      public void afterTextChanged(Editable s) 
      { 

      } 

      public void beforeTextChanged(CharSequence s, int start, 
      int count, int after) 
      { 

      } 

      public void onTextChanged(CharSequence s, int start, 
      int before, int count) 
      { 

      textlength = edittext.getText().length(); 
      text_sort.clear(); 
      image_sort.clear(); 

      for (int i = 0; i < text.length; i++) 
      { 
      if (textlength <= text[i].length()) 
      { 
       if (edittext.getText().toString(). 
      equalsIgnoreCase((String) text[i].subSequence(0, textlength))) 
       { 
       text_sort.add(text[i]); 
       image_sort.add(image[i]); 
       } 
      } 
      } 

      listview.setAdapter(new MyCustomAdapter 
      (text_sort, image_sort)); 

      listview.setOnItemClickListener(new OnItemClickListener(){ 

       @Override 
       public void onItemClick(AdapterView<?> parent, View view, 
         int position, long rowId) { 
        // TODO Auto-generated method stub 
        listview.getItemAtPosition(position); 
        AlertDialog.Builder adb = new AlertDialog.Builder(
          MainActivity.this); 
          adb.setTitle("List"); 
          adb.setMessage(" selected Item is=" 
          + listview.getItemAtPosition(position)); 
          adb.setPositiveButton("Ok", null); 
          adb.show();  

       } 

      }); 

      } 
      }); 
     } 

     class MyCustomAdapter extends BaseAdapter 
     { 

      String[] data_text; 
      int[] data_image; 

      MyCustomAdapter() 
      { 

      } 

      MyCustomAdapter(String[] text, int[] image) 
      { 
      data_text = text; 
      data_image = image; 
      } 

      MyCustomAdapter(ArrayList<String> text, ArrayList<Integer> image) 
      { 

      data_text = new String[text.size()]; 
      data_image = new int[image.size()]; 

      for(int i=0;i<text.size();i++) 
      { 
      data_text[i] = text.get(i); 
      data_image[i] = image.get(i); 
      } 

      } 

      public int getCount() 
      { 
      return data_text.length; 
      } 

      public String getItem(int position) 
      { 
      return null; 
      } 

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

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

      LayoutInflater inflater = getLayoutInflater(); 
      View row; 

      row = inflater.inflate(R.layout.listview, parent, false); 

      TextView textview = (TextView) row.findViewById(R.id.TextView01); 
      ImageView imageview = (ImageView) row 
      .findViewById(R.id.ImageView01); 

      textview.setText(data_text[position]); 
      imageview.setImageResource(data_image[position]); 

      return (row); 

      } 
     } 

回答

1

你得到錯誤的值在您的警報 錯誤

+listview.getItemAtPosition(position)); 

adb.setMessage(" selected Item is="+text_sort.get(position).toString()); 
+0

Ankitmakwana:我運行你的代碼,但我得到的錯誤: – Ram

+0

和仍然是其答案?有趣:) – waqaslam

+0

仍然出錯? –

1

嘗試改變這一點:

adb.setMessage(" selected Item is= " + listview.getItemAtPosition(position)); 

要這樣:

adb.setMessage(" selected Item is= " + text_sort.get(position)); 
+0

完美的工作。但如何獲得image_sort? – Ram

+0

使用'image_sort.get(位置)'會給你圖像的資源id(int) – waqaslam

+0

圖像將不會顯示.... – Ram