Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.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
Android 当上一行';s复选框已选中_Android_Json_Android Listview_Android Checkbox - Fatal编程技术网

Android 当上一行';s复选框已选中

Android 当上一行';s复选框已选中,android,json,android-listview,android-checkbox,Android,Json,Android Listview,Android Checkbox,我对Listview和复选框有疑问 我正在使用以下JSONdata { "title": "Amount Field", "settingItems": [ { "title": "Manual Entry", "type": "boolean", "value": true },


我对Listview和
复选框有疑问
我正在使用以下
JSON
data

{
            "title": "Amount Field",
            "settingItems": [
              {
                "title": "Manual Entry",
                "type": "boolean",
                "value": true
              },
              {
                "title": "Predefined Amount",
                "type": "Amount",
                "value": 0.00
              },
              {
                "title": "Drop Down Amount Menu",
                "type": "boolean",
                "value": false
              },
              {
                "title": "",
                "type": "Amount",
                "value": 0.00
              }
            ]
          }
使用上述数据,我还管理了列表末尾的
列表视图
,即在列表视图的最后一项,我显示了添加金额的下拉按钮。现在我想要什么

当我选中
ListView
的下拉菜单金额列表项时,最后一行必须可见,反之亦然
代码必须写入getView方法中的内容您可以使用view.setVisibility(view.visible)或view.setVisibility(view.INVISIBLE)设置布局可见和不可见

在本例中,使用字符串变量存储选定行的id

主要活动

public class MainActivity extends Activity {

 static final String TAG_NAME = "name";
 static final String TAG_ID = "id";
 static String selected = "";

ListView listView;


HashMap<String, String> map;
ArrayList<HashMap<String,String>> myList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    myList = new ArrayList<HashMap<String,String>>();       
    listView = (ListView) findViewById(R.id.listView1);
    fillListView();
}

private void fillListView() {

    myList.clear();

    map = new HashMap<String, String>();
    map.put(TAG_ID,"1");
    map.put(TAG_NAME, "Name1");
    myList.add(map);

    map = new HashMap<String, String>();
    map.put(TAG_ID,"2");
    map.put(TAG_NAME, "Name2");
    myList.add(map);

    map = new HashMap<String, String>();
    map.put(TAG_ID,"3");
    map.put(TAG_NAME, "Name3");
    myList.add(map);

    map = new HashMap<String, String>();
    map.put(TAG_ID,"4");
    map.put(TAG_NAME, "Name4");
    myList.add(map);

    listView.setAdapter(new MyListAdapter(this, R.layout.row, myList));

}
private class MyListAdapter extends BaseAdapter 
{

    private List<HashMap<String,String>> List;
    private LayoutInflater mInflater;
    private int layoutresource;

    public MyListAdapter(Context context,int resource,List<HashMap<String, String>> myList) {
        List = myList;
        mInflater = LayoutInflater.from(context);
        layoutresource = resource;
    }

    @Override
    public int getCount() {
        return List.size();
    }

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

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

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

        if (convertView == null) {
            convertView = mInflater.inflate(layoutresource,null);
        }    

         final View rootView = convertView.findViewById(R.id.root);

        ImageView imageView = (ImageView) convertView.findViewById(R.id.imageView1);
        final TextView name = (TextView) convertView.findViewById(R.id.textView1);

        imageView.setImageDrawable(getResources().getDrawable(R.drawable.profile));
        name.setTextColor(Color.parseColor("#ffffff"));
        name.setText(List.get(position).get(TAG_NAME));

        if ( List.get(position).get(TAG_ID).equals(selected))
            name.setTextColor(Color.parseColor("#ff0000"));
        else
            name.setTextColor(Color.parseColor("#ffffff"));


        rootView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                selected = List.get(position).get(TAG_ID);
                fillListView();
            }
        });

        name.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                rootView.performClick();
            }
        });

        imageView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                rootView.performClick();
            }
        });

        return convertView;
    }
}
公共类MainActivity扩展活动{
静态最终字符串标记_NAME=“NAME”;
静态最终字符串标记\u ID=“ID”;
选择静态字符串=”;
列表视图列表视图;
HashMap图;
ArrayList myList;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myList=新的ArrayList();
listView=(listView)findViewById(R.id.listView1);
fillListView();
}
私有void fillListView(){
myList.clear();
map=新的HashMap();
地图放置(标签ID,“1”);
地图放置(标签名称,“名称1”);
添加(地图);
map=新的HashMap();
地图放置(标签ID,“2”);
地图放置(标签名称,“名称2”);
添加(地图);
map=新的HashMap();
地图放置(标签ID,“3”);
地图放置(标签名称,“名称3”);
添加(地图);
map=新的HashMap();
地图放置(标签ID,“4”);
地图放置(标签名称,“名称4”);
添加(地图);
setAdapter(新的MyListAdapter(this,R.layout.row,myList));
}
私有类MyListAdapter扩展BaseAdapter
{
私人名单;
私人停车场;
私人内部布局资源;
公共MyListAdapter(上下文上下文、int资源、列表myList){
列表=myList;
mInflater=LayoutInflater.from(上下文);
layoutresource=资源;
}
@凌驾
public int getCount(){
返回List.size();
}
@凌驾
公共对象getItem(int位置){
返回列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
if(convertView==null){
convertView=mInflater.充气(布局资源,空);
}    
最终视图rootView=convertView.findViewById(R.id.root);
ImageView ImageView=(ImageView)convertView.findViewById(R.id.imageView1);
final TextView name=(TextView)convertView.findViewById(R.id.textView1);
setImageDrawable(getResources().getDrawable(R.drawable.profile));
name.setTextColor(Color.parseColor(#ffffff”);
name.setText(List.get(position.get(TAG_name));
if(List.get(position).get(TAG_ID).equals(selected))
name.setTextColor(Color.parseColor(#ff0000”);
其他的
name.setTextColor(Color.parseColor(#ffffff”);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
所选=列表.get(位置).get(标记ID);
fillListView();
}
});
name.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
rootView.performClick();
}
});
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
rootView.performClick();
}
});
返回视图;
}
}

}

但是我怎么知道下拉菜单中的amountMenu listitem已选中。。在此之后,您的建议将起作用。为此,您可以使用flag或arraylist来存储选定的下拉id,并且该id在getView methodused中进行比较该位置的flag也起作用。。但不验证ListView…我在getView()中使用了notifyDataSetChanged()…所以现在如何刷新ListView..不要使用notifyDataSetChanged()方法。将更新的适配器设置为listviewwhere以及如何更新适配器…因为所有操作都发生在getView()内部,而不是在活动中。。。