0

2つのテキストビューと1つの画像ビューを持つカスタムリストビューがありました。各行をクリックすると、カスタムダイアログが表示されます。リストビューを開いて行をクリックすると、ダイアログを表示できますが、スクロールして行をクリックすると、ダイアログは表示されません。

私のonListItemclickコードは次のとおりです`

final Dialog password = new Dialog(VCStegoInboxWithOutCheckboxes.this);
        password.setContentView(R.layout.dialog);
        password.setTitle("Enter your Password");

        final EditText getPassword = (EditText) password
                .findViewById(R.id.edconfirmpwd);
        Button okButton = (Button) password.findViewById(R.id.ok);
        okButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                String ConfirmCode = getPassword.getText().toString();
                SharedPreferences settingsActivity = getSharedPreferences(
                        "UserName", Activity.MODE_PRIVATE);
                String Password = settingsActivity.getString("Password", null);

                if (ConfirmCode.equals(Password)) {
                                        Intent showMsgIntent = new Intent();
                        showMsgIntent.setClass(getApplicationContext(),
                                VCStegoShowMessageScreen.class);

                        startActivity(showMsgIntent);


                } else {
                    Toast.makeText(getBaseContext(), "InvalidPassword",
                            Toast.LENGTH_SHORT).show();

                }

                password.dismiss();

            }
        });
        Button cancelButton = (Button) password.findViewById(R.id.cancel);
        cancelButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("Entered on cancel button clicked");
                password.dismiss();

            }
        });
        password.show();

    }

私が観察したもう1つのことは、すべての行のダイアログを表示できるようにスクロールしたとしても、それが(imageviewではなく)textviewであるかどうかです。

私のアダプターの方法は

public class InboxAdapter extends BaseAdapter {
    private LayoutInflater inflater;
    private TextView Tvname, TVtimeStamp;
    private ImageView IVmsg;

    public InboxAdapter(Context context, List<VCStegoInboxList> inboxList) {
        inflater = LayoutInflater.from(context);
        VCStegoInboxWithOutCheckboxes.Inboxlist = inboxList;
    }
    public class ViewHolder{
           private TextView Tvname;
           private TextView TVtimeStamp;              
           private ImageView IVmsg;
          }

    public int getCount() {
        return VCStegoInboxWithOutCheckboxes.Inboxlist.size();
    }

    // @Override
    public Object getItem(int position) {
        return VCStegoInboxWithOutCheckboxes.Inboxlist.get(position);
    }

    // @Override
    public long getItemId(int position) {
        return position;
    }

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

        ViewHolder holder;

           if (convertView==null){

            holder = new ViewHolder();

        convertView = inflater.inflate(R.layout.inboxtextviews, null);
        Tvname = (TextView) convertView.findViewById(R.id.tvinboxname);

        IVmsg = (ImageView) convertView.findViewById(R.id.tvinboxmsg);



        TVtimeStamp = (TextView) convertView.findViewById(R.id.tvtimeStamp);

        convertView.setTag(holder);
       }else{

        holder = (ViewHolder) convertView.getTag();
       }
           Tvname.setText(VCStegoInboxWithOutCheckboxes.Inboxlist
                .get(position).getname());
           IVmsg.setImageBitmap(VCStegoInboxWithOutCheckboxes.Inboxlist.get(
                    position).getBitmap());
           TVtimeStamp.setText(VCStegoInboxWithOutCheckboxes.Inboxlist.get(
                    position).getTimeStamp());
        return convertView;
    }

}

私のxmlファイルは

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/tvinboxname"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<ImageView
    android:id="@+id/tvinboxmsg"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"        
    android:layout_below="@+id/tvinboxname"

    android:contentDescription="@string/contentDes" />

<TextView
    android:id="@+id/tvtimeStamp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/tvinboxmsg"
    android:textAppearance="?android:attr/textAppearanceSmall" />

4

1 に答える 1

1

次のようにルートレイアウトIDにIDを割り当てます

  <RelativeLayout 
     android:id="@+id/root"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

<your TextView/>
<your ImageView/>
<your TextView/>

</RelativeLayout>

次のようなアダプタクラスでルートを取得します

root = (RelativeLayout) convertView.findViewById(R.id.root);

onclickリスナーを行の上に記述しreturn convertView;ます。アダプタクラスのonclickリスナーは次のようになります。

root.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
//toast display dialog code here
}
});
于 2012-05-21T06:46:38.110 に答える