带AlertDialog的TextView

时间:2011-12-15 08:20:33

标签: android android-widget

好的,我正在尝试创建一个列表视图,列出一些地方,每个项目都有一个图片(ImageVew)和一个TextView,这样当一个地方被击中时,AlerDialog框会出现信息(不同的信息)对于每个地方)。我知道如何制作列表视图...但我不知道如何使其可点击并显示带有差异信息的对话窗口...我也需要一个适配器。是否可以完成这个?如果是这样的话?比你

2 个答案:

答案 0 :(得分: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 :(得分:1)

在listview上添加一个事件监听器,点击:

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();