@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
private void initView(){
listView=(ListView)findViewById(R.id.listview);
listView.setAdapter(new ListAdapter(this));
public void saveEditData(int position, String str) {
Toast.makeText(this,str+"----"+position,Toast.LENGTH_LONG).show();
Adapter
public class ListAdapter extends BaseAdapter {
Context context;
LayoutInflater inflater;
String[] strings=new String[]{"商品1","商品2","商品3"};
public ListAdapter(Context context) {
this.inflater=LayoutInflater.from(context);
this.context=context;
@Override
public int getCount() {
return 3;
@Override
public Object getItem(int position) {
return strings[position];
@Override
public long getItemId(int position) {
return position;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (null == convertView){
convertView = inflater.inflate(R.layout.item_multiple_confirm,null);
holder =new ViewHolder(convertView,position);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
holder.tv_name.setText(getItem(position).toString());
return convertView;
class ViewHolder{
TextView tv_name;
EditText editText;
public ViewHolder(View view,int pisition){
tv_name = (TextView) view.findViewById(R.id.fill_order_name);
editText= (EditText) view.findViewById(R.id.fill_order_ltext);
editText.setTag(pisition);//存tag值
editText.addTextChangedListener(new TextSwitcher(this));
class TextSwitcher implements TextWatcher {
private ViewHolder mHolder;
public TextSwitcher(ViewHolder mHolder) {
this.mHolder = mHolder;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int position = (int) mHolder.editText.getTag();//取tag值
((MainActivity)context).saveEditData(position, s.toString());
@Override
public void afterTextChanged(Editable s) {
代码是写的比较简单,源码点击下载
最近项目的购物车中用列表中包含了留言功能, 需要获取EditText输入的内容,当购买多件商品时,就有点棘手了。经过查资料解决了这个功能,并写了一个案例; 效果图: 可以在商品数据用一个字段来管理留言数据,这样别方便的操作了。 代码:public class MainActivity extends AppCompatActivity { ListV
文章开始之前,请大家思考这样一个问题 ListView的每条Item中多个Edittext如何获取输入值?且防止数据错乱?
如果是你你会怎么做?如果你有更好的思路欢迎你留言,谢谢
先给老铁们上一张动态图
这里我偷了一个懒,直接使用的是我的Android中ListView结合CheckBox获取选中项 博客中的源代码来实现的
可以看到我们的动态图上,单选,全选,局部修改...
一、前几天在群里聊天,碰到一个哥们问listview的itemview中包含editext时怎么处理,当初没有做过这种需求本以为很简单,结果尼玛,心酸啊…一枚小菜鸡轻轻的路过~~~嘎嘎二、Demo效果图:(android studio截图一直是这么大,很纠结,讲究着看吧….)三、主要解决问题点:1.在listview中editetext焦点的问题
2.某些机型下,点击edittext软键盘弹出紧接
ListView list = (ListView) findViewById(R.id.listview);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Ov...
可以明确,现在没有直接方法可以获得ListView中每一行EditText的值.
可以明确,现在没有直接方法可以获得ListView中每一行EditText的值.
解决方案:重写BaseAdapter,然后自行获取ListView中每行输入的EditText值.
大概算法:重写BaseAdapter.getView函数,用一个数组存储EditText中的值,根据position即数组下标,在ge...
可以明确,现在没有直接方法可以获得ListView中每一行EditText的值.
解决方案:重写BaseAdapter,然后自行获取ListView中每行输入的EditText值.
大概算法:重写BaseAdapter.getView函数,用一个数组存储EditText中的值,根据position即数组下标,在getView中动态更新EditText和动态获取EditText中
直入主题,今天给大家带来ListView的A-Z字母排序和过滤搜索功能并且实现汉字转成拼音的功能,我们知道一般我们对联系人,城市列表等实现A-Z的排序,因为联系人和城市列表我们可以直接从数据库中获取他的汉字拼音,而对于一般的数据,我们怎么实现A-Z的排序,我们需要将汉字转换成拼音就行了,接下来就带大家实现一般数据的A-Z排序功能,首先先看下效果图
上面是一个带删除按钮的EditText,我们在输入框中输入可以自动过滤出我们想要的东西,当输入框中没有数据自动替换到原来的数据列表,然后下面一个ListView用来显示数据列表,右侧是一个字母索引表,当我们点击不同的字母,ListView会定位到该
送餐Android应用程序
在“第一个屏幕”上,它从用户处获取纯文本地址,并将其转换为具有“纬度和经度”值的“位置”,以便可以与其他位置进行比较。 还可以选择在取件和交货之间进行选择。 即使不是很清楚,如果您选择自己捡起,也不会支付小费或送货费。
点击提交后,应用程序将获取您的经度和纬度,并找到这些餐馆与您之间的距离。 Android Location类中内置的distance方法以米为单位返回,因此需要转换为英里。 尽管不是很明显,但这实际上是一个ListView,如果它有更多的餐厅,它将可以滚动浏览。 在此示例中,该位置获取郊区以外的所有餐厅。 要更改地址,只需再次在edittext字段中输入并提交即可。 要前进,请单击您想在其用餐的餐厅。
下一个菜单是应用程序的大脑; 它实际上接受订单。 您在“项目”字段中键入内容,然后会出现一个下拉菜单,其中包含多个选项。 单击将转到数量,并在对其进行调整后,单击按订单添加将其添加到底部项目日志,这与分配3稍有不同。要继续,请单击Checkout。 要转到上一个菜单,只需单击后退按钮。
添加食物后,您可以选择签出并下订单。 它重复使用了之
2. 创建一个适配器 Adapter,将数据和布局文件绑定。
3. 在 Activity 中获取 EditText 和 ListView 的实例,并为 EditText 添加文本改变监听器。
4. 在文本改变监听器中获取 EditText 的内容,并根据内容过滤数据源。
5. 将过滤后的数据源更新到适配器中,并调用适配器的 notifyDataSetChanged() 方法刷新 ListView。
以下是代码示例:
布局文件:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/et_search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Search..."/>
<ListView
android:id="@+id/lv_search_result"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
Adapter:
public class MyAdapter extends BaseAdapter {
private List<String> mData;
private LayoutInflater mInflater;
public MyAdapter(Context context, List<String> data) {
mData = data;
mInflater = LayoutInflater.from(context);
@Override
public int getCount() {
return mData.size();
@Override
public String getItem(int position) {
return mData.get(position);
@Override
public long getItemId(int position) {
return position;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item_listview, parent, false);
TextView tv = convertView.findViewById(R.id.tv_item);
tv.setText(getItem(position));
return convertView;
Activity:
public class MainActivity extends AppCompatActivity {
private EditText mEtSearch;
private ListView mLvSearchResult;
private List<String> mData;
private MyAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEtSearch = findViewById(R.id.et_search);
mLvSearchResult = findViewById(R.id.lv_search_result);
mData = new ArrayList<>(Arrays.asList("Apple", "Banana", "Cherry", "Durian", "Elderberry"));
mAdapter = new MyAdapter(this, mData);
mLvSearchResult.setAdapter(mAdapter);
mEtSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String keyword = s.toString().toLowerCase(Locale.getDefault());
List<String> filteredData = new ArrayList<>();
for (String item : mData) {
if (item.toLowerCase(Locale.getDefault()).contains(keyword)) {
filteredData.add(item);
mAdapter = new MyAdapter(MainActivity.this, filteredData);
mLvSearchResult.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
@Override
public void afterTextChanged(Editable s) {}