0

我使用以下教程http://www.ezzylearning.com/tutorial.aspx?tid=1763429创建了一个自定义列表视图。

我的列表视图包括两行(每行都有一个图像和一个 TextView)。第一行是用户,第二行是密码。我正在寻找一种将密码行设置为屏蔽的方法,例如 ****,并添加另一行以使用户能够将其设置为可见/屏蔽。

我找到了以下示例, 如何在 textview 中显示隐藏密码? 如何在隐藏和查看密码之间切换

但我不知道如何在特定行上实现它。

我的行 xml

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

     <ImageView android:id="@+id/imgUserAccountIcon"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_marginRight="10dp"
        android:layout_marginTop="5dp"
        android:gravity="center_vertical"
        android:scaleType="fitStart" />

     <TextView android:id="@+id/txtTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp" 
                    android:layout_marginTop="5dp"
            />


</LinearLayout>

我的用户类

public class UserAccountData {
    public int icon;
    public String title;

    public UserAccountData(){
        super();
    }


public UserAccountData(int icon, String title) {
    super();
    this.icon = icon;
        this.title = title;
    }
}

我的适配器类

public class UserAccountAdapter extends ArrayAdapter<UserAccountData> {
    Context context;
    int layoutResourceId;
    UserAccountData data[] = null;
public UserAccountAdapter(Context context, int layoutResourceId,
        UserAccountData[] data) {
    super(context, layoutResourceId, data);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.data = data;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    UserAccountDataHolder holder = null;

    if (row == null) {
        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);

        holder = new UserAccountDataHolder();
        holder.imgIcon = (ImageView) row.findViewById(R.id.imgUserAccountIcon);
        holder.txtTitle = (TextView) row.findViewById(R.id.txtTitle);

        row.setTag(holder);
    } else {
        holder = (UserAccountDataHolder) row.getTag();
    }

    UserAccountData userAccountData = data[position];
    holder.txtTitle.setText(userAccountData.title);     
    holder.imgIcon.setImageResource(userAccountData.icon);


    return row;
}

static class UserAccountDataHolder {
    ImageView imgIcon;
    TextView txtTitle;
}

}

以及活动方法的适当列表视图片段

List<UserAccountData> user_data = new ArrayList<UserAccountData>();
user_data.add(new UserAccountData(R.drawable.username_icon,"userName");
user_data.add(new UserAccountData(R.drawable.password_icon,"password");
usersArray = new UserAccountData[user_data.size()];
user_data.toArray(usersArray);

UserAccountAdapter adapter = new UserAccountAdapter(this,                       R.layout.user_accounts_row, usersArray);

userAccountsListView = (ListView) findViewById(R.id.userAccounts);

   userAccountsListView.setAdapter(adapter);

附上我想要完成的图片

点击前:

在此处输入图像描述

点击后

在此处输入图像描述

谢谢

4

3 回答 3

0

您可以在充气时填写适配器中的 TextView 列表。膨胀后,您可以访问所有 TextView,然后在您的 onItemClickListener 中,当有人单击位置 2 中的项目时(至少在这种情况下),您只需引用您的 TextView 列表,获取适当的列表,然后即时更改参数。

于 2013-01-25T21:42:49.470 回答
0

如果您有一组像这样的少量行,TableLayout 比 ListView 更适合。然后您可以轻松自定义两个 TextView 的 xml。另一种选择是调用 setRawInputType 在第二个 TextView 上设置密码。您需要根据视图的位置在适配器的 getView 函数中执行此操作。

于 2013-01-25T21:44:56.230 回答
0

好吧,当用户单击 ListView 条目时,我通过在 AlertDialog 中将密码显示为纯文本来解决此问题。

于 2014-01-06T15:34:25.770 回答