android之listView的使用(ArrayAdapter和SimpleAdapter)、radioGroup的使用

实现RadioButton由两部分组成,也就是RadioButton和RadioGroup配合使用

.RadioGroup是单选组合框,可以容纳多个RadioButton的容器.在没有RadioGroup的情况下,RadioButton可以全部都选中;

当多个RadioButton被RadioGroup包含的情况下,RadioButton只可以选择一个。

并用setOnCheckedChangeListener来对单选按钮进行监听。 

public class Fragmenthome extends Fragment implements View.OnClickListener {

    private Button firstBtn;
private   Myadapt adp;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {


        return inflater.inflate(R.layout.fragmentl, container, false);//打气筒可以吧xml资源转换成view,
    }

    /*view创建完毕*/
    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        firstBtn = (Button) view.findViewById(R.id.login);
        firstBtn.setOnClickListener(this);//按钮点击,下面实现implements View.OnClickListener接口方法

//        // ArrayAdapt*********************ArrayAdapter通常用于将数组或List集合的多个值包装成多个列表项。
        ListView list = (ListView) view.findViewById(R.id.list);
//        String [] das={"   a","   b","  c","   d"};
//        ArrayAdapter<String> adp=new ArrayAdapter<String>(getContext(),R.layout.itemsingle,R.id.textv,das);
//     list.setAdapter(adp);

        // SimpleAdapter 的使用*************
        List<Map<String,String>> das=new ArrayList<>();
        Map<String,String> map=new HashMap<>();
        map.put("name","aa1");
        map.put("phone","1333");
        Map<String,String> map2=new HashMap<>();
        map2.put("name","aa2");
        map2.put("phone","1333");
        Map<String,String> map3=new HashMap<>();
        map3.put("name","aa3");
        map3.put("phone","1333");
das.add(map);
das.add(map2);
das.add(map3);
//第一个参数是context,第二个参数是List数据,第三个参数是List中的item,第四个参数是map中的键数组,第五个参数是item。xml中的控件
SimpleAdapter sadp=new SimpleAdapter(getContext(),das,R.layout.itemsingle,new String[]{"name","phone"},new int[]{R.id.textl,R.id.textr});
list.setAdapter(sadp);

baseAdapt 的使**********************************
//        ListView list = (ListView) view.findViewById(R.id.list);
//      adp = new Myadapt();
//
//        list.setAdapter(adp);//listview设置适配器
//
//        initData();
    }

    private void initData() {
        List<String > da=new ArrayList<>();
        da.add("dddd");
        da.add("dddd01");
        da.add("dddd02");
        da.add("dddd03");
        adp.setData(da);
    }

    //按钮点击事件,通过意图吧跳转到下一个activity,吧数据传到下一个页面
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.login:
                Intent inten = new Intent(getContext(), ACOne.class);
                inten.putExtra("f", "diyige");
                startActivity(inten);/*跳转到下一个页面*/
                break;

        }
    }

    public class Myadapt extends BaseAdapter {

private List<String> data;
public  void  setData(List<String> data){
    this.data=data;
    notifyDataSetChanged();
}

        @Override
        public int getCount() {
    if(data==null){
        data=new ArrayList<>();
    }
            return data.size();
        }

        @Override
        public Object getItem(int position) {
            Log.e("a","posi:"+position);
    return data.get(position);
        }

        @Override

        public long getItemId(int position) {
            Log.e("b","posi:"+position);
            return position;
        }



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

            View v;
      ViewHolder holder = null;
            if (convertView == null) {
                holder=new ViewHolder();
//                v = View.inflate(getContext(), R.layout.item, null);//打气筒方法一:吧xml布局转换成view
//                v = LayoutInflater.from(getContext()).inflate(R.layout.item,null);//打气筒方法二
    LayoutInflater imflate= (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);//打气筒方法三
      v=imflate.inflate(R.layout.item,null);

              holder.et = (EditText) v.findViewById(R.id.et);
              holder.imagV= (ImageView) v.findViewById(R.id.imagv);
            } else {
                v = convertView;
            }

            holder.et.setText(data.get(position));
            holder.imagV.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //点击imageView
                }
            });
            return v;
        }

        public  class ViewHolder{
ImageView imagV;
EditText et;


        }

    }
}

----------item-------------

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<EditText
    android:id="@+id/et"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="item的数据"
    android:ellipsize="end"
    android:lines="1"
    android:textColor="#000000"/>

    <ImageView
        android:id="@+id/imagv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</LinearLayout>

 

======================Listview和radiogroup的使用=========

public class MainActivity extends AppCompatActivity {
    String[] ob = {"one", "two", "three", "four", "five"};
    private EditText et;
    private RadioGroup rg;
    private ListView lv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        rg = findViewById(R.id.rg);
        et = findViewById(R.id.et_name);
        lv = findViewById(R.id.textLv);
        ArrayAdapter<String> adp = new ArrayAdapter<String>(this, R.layout.item, R.id.tx_item, ob);//设置数据
        lv.setAdapter(adp);//设置数据适配器
//给ListView设置点击事件
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            //当条目被点击的时候被调用
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                //吧点击条目的数据取出来
                Log.e("s","点击Item");
//                String s = ob[i];
//
//                Intent intent = new Intent();
//                //设置动作
//                intent.setAction("android.intent.action.View");
                //添加Categary
//                intent.addCategory("android.intent.category.DEFAULT");
//                //设置TYPE
//                intent.setType("text/plain");
//                //传递数据
//                intent.putExtra("sms_body", s);
//
//                //跳转到发送短信页面
//                startActivity(intent);

            }
        });

    }

    //计算radioGroup按钮点击事件

    public void cacuteClick(View v) {
        int sex = 0;
        String etS = et.getText().toString().trim();
        if (!TextUtils.isEmpty(etS)) {
            //获取radiobutton的ID
            int rdId = rg.getCheckedRadioButtonId();
            switch (rdId) {


                case R.id.man:
                    sex = 1;
                    break;
                case R.id.fale:
                    sex = 2;
                    break;
                case R.id.middle:
                    sex = 3;
                    break;

            }
            if (sex == 0) {

                return;
            } else {
                //跳转activity

                Intent intent = new Intent(this, NewActivity.class);
                intent.putExtra("name", "lambo");
                startActivity(intent);

            }
        }

    }

}
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.wofu.fiverenpin.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="50dp"
        android:orientation="vertical"
       >

        <EditText
            android:id="@+id/et_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入姓名"
           />
        <RadioGroup
            android:id="@+id/rg"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >

            <RadioButton
                android:id="@+id/man"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:checked="true"
                android:drawableLeft="@drawable/select"
                android:gravity="center"
                android:text="男" />
            <RadioButton
                android:id="@+id/fale"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"

                android:text="女"/>
            <RadioButton
                android:id="@+id/middle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="人妖"/>

        </RadioGroup>

        <Button
            android:id="@+id/sureBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="计算"
            android:onClick="cacuteClick"/>

<ListView
    android:id="@+id/textLv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:descendantFocusability="afterDescendants">



</ListView>
    </LinearLayout>


</android.support.design.widget.CoordinatorLayout>

 

===========listView中优化措施,使用viewHolder=======

 

public class CallSmsSafeActivty extends Activity {


    private TextView tv_blackname;
    private ListView lst_blackname;
    private List<BlackNumberInfo> infos;
    private BlacknameDao dao;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.callsmssafe_activity);

        tv_blackname = findViewById(R.id.tv_blackname);
        lst_blackname = findViewById(R.id.lst_blackname);
dao=new BlacknameDao(this);
infos=dao.findAll();
CallSmsSafeAdapt adp=new CallSmsSafeAdapt();
lst_blackname.setAdapter(adp);

    }
private class CallSmsSafeAdapt extends BaseAdapter{


    private viewHolder holder;

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

    @Override
    public Object getItem(int i) {
        return null;
    }

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

    //有多少个条目,这个方法就会被调用多少次
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        View v;
        if(view!=null){
            v=view;
            holder= (viewHolder) v.getTag();
        }else {
            v = View.inflate(getApplicationContext(), R.layout.list_callblackname_item, null);
            holder = new viewHolder();
            holder.tv=(TextView) v.findViewById(R.id.lst_blackname);
            v.setTag(holder);
        }

        holder.tv.setText(infos.get(i).getNumber());

        return v;
    }
}

//记事本存储textview的内存地址
class  viewHolder{
        private TextView tv;
}
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值