具有editText和textView的Android自定义适配器

java android adapter

49 观看

1回复

1 作者的声誉

我正在尝试为数独游戏实现一个Android应用,为此我创建了一个自定义适配器。我想为允许用户修改的单元格制作编辑文本,并为程序填充的单元格添加textview,ediTexts和textViews的数量将是随机的。如何在适配器中指定?

这是我的适配器:

public class SodukuAdapter extends BaseAdapter {

    ArrayList<String> items;


    static Activity mActivity;

    private static LayoutInflater inflater = null;

    public SodukuAdapter (Activity activity, ArrayList<String> tempTitle,) {
        mActivity = activity;
        items = tempTitle;


        inflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public final int getCount() {

        return items.size();

    }

    @Override
    public final Object getItem(int position) {
        return items.get(position);
    }

    @Override
    public final long getItemId(int position) {

        return position;
    }

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

        View v = null;

        v = inflater.inflate(R.layout.item, null);

        EditText et = (EditText) v.findViewById(R.id.et);
        et.setText(items.get(position));

        return v;
    }

}
作者: M.Noe 的来源 发布者: 2017 年 3 月 29 日

回应 1


0

3618 作者的声誉

您可以将两个视图放置在同一父视图中(例如,父视图是a RelativeLayout或a FrameLayout),使它们彼此重叠。比起您只是简单地隐藏其中一个,并在适配器setVisibility()getView()方法中显示另一个即可。

当然,您将需要一个数据源对象,该对象可以跟踪视图应显示TextView还是EditText

class SodokuItem {
    public boolean isStatic;
    public String text;
}

...

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

    View v = inflater.inflate(R.layout.item, null);

    SodokuItem item = items.get(position);

    EditText et = (EditText) v.findViewById(R.id.et);
    TextView tv = (TextView) v.findViewById(R.id.tv);

    if(item.isStatic){
        et.setVisibility(GONE);
        tv.setText(item.text);
    }else{
        tv.setVisibility(GONE);
        et.setText(item.text);
    }

    return v;
}
作者: xxtesaxx 发布者: 2017 年 3 月 29 日
32x32