Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android自定义适配器,具有editText和textView_Java_Android_Adapter - Fatal编程技术网

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

Java Android自定义适配器,具有editText和textView,java,android,adapter,Java,Android,Adapter,我正在尝试为数独游戏实现一个Android应用程序,并为此创建了一个定制的适配器。我想为允许用户修改的单元格创建编辑文本,并为程序填充的单元格创建文本视图,编辑文本和文本视图的数量将是随机的。如何在适配器中指定它 这是我的适配器: public class SodukuAdapter extends BaseAdapter { ArrayList<String> items; static Activity mActivity; private sta

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

这是我的适配器:

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;
    }

}
公共类SodukuAdapter扩展BaseAdapter{
数组列表项;
静态活性;
专用静态充气机=空;
公共SodukuAdapter(活动,ArrayList Tentitle){
活动性=活动性;
项目=诱惑力;
充气器=(充气器)活动
.getSystemService(上下文布局\充气机\服务);
}
@凌驾
公共最终整数getCount(){
返回items.size();
}
@凌驾
公共最终对象getItem(int位置){
返回项目。获取(位置);
}
@凌驾
公共最终长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图v=null;
v=充气机充气(R.layout.item,空);
EditText et=(EditText)v.findViewById(R.id.et);
et.setText(items.get(position));
返回v;
}
}

您可以将两个视图放置在同一父视图中(例如,父视图是
相对视图
框架布局
),以便它们位于彼此的顶部。然后在适配器的
getView()
方法中使用
setVisibility()
隐藏其中一个,并显示另一个

当然,您需要一个数据源对象来跟踪视图是显示
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;
}