2011-12-15 65 views
0

好吧,我試圖做一個列表視圖,列出一些地方,每個項目將有一個圖片(ImageVew)和一個TextView,當一個地方被擊中時,一個AlerDialog框將出現信息(每個地方的不同信息)。我知道如何製作列表視圖...但我不知道如何使它可點擊並顯示帶有差異信息的對話框窗口......我還需要一個適配器。是有可能做到這一點?如果是這樣的話?怎麼樣?比你TextView與AlerDialog

回答

1

在我的情況下,圖像是一個複選框。

的XML可能是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"> 

<CheckBox android:id="@+id/check" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:button="@android:drawable/btn_star" 
    android:focusable="false"/> 

<TextView android:id="@+id/label" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"  
    android:layout_alignParentRight="true" 
    android:layout_marginLeft="5px" 
    android:layout_marginTop="6px" 
    android:layout_toRightOf="@+id/check" 
    android:textSize="25px" 
    android:focusable="false"/> 

</RelativeLayout> 

你需要像一個適配器:

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

    final Object np = getItem(position); 

    View view = null; 

    if (convertView == null) { 

     LayoutInflater inflator = (LayoutInflater) getContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     view = inflator.inflate(R.layout.listitem, null); 

     final ViewHolder viewHolder = new ViewHolder(); 
     viewHolder.text = (TextView) view.findViewById(R.id.label); 
     viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check); 

     view.setTag(viewHolder); 
     viewHolder.checkbox.setTag(np); 

    } else { 

     view = convertView; 
     ((ViewHolder) view.getTag()).checkbox.setTag(np); 

    } 

    final ViewHolder holder = (ViewHolder) view.getTag(); 
    holder.text.setText(np.toString); 

    holder.text.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      [Create the Dialog] 

     } 
    }); 

    holder.checkbox 
      .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

       @Override 
       public void onCheckedChanged(CompoundButton buttonView, 
         boolean isChecked) { 

        [do something] 

       } 
      }); 

    return view; 
} 

static class ViewHolder { 

    protected TextView text; 
    protected CheckBox checkbox; 

} 
1

對列表視圖點擊添加事件偵聽器:

getListView().setOnItemClickListener(new OnItemClickListener() { 


     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      // you create your dialog here 
     } 
    }); 

來創建一個對話框:

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setMessage("your_message_here") 
        .setPositiveButton(getResources().getString(R.string.ok), 
          dialogClickListener).setCancelable(false).show();