从大型产品列表转到较小的列表视图 [英] Going from a large product list and into a smaller list view

查看:46
本文介绍了从大型产品列表转到较小的列表视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个商店的大型产品清单。我希望用户能够点击列表中的项目,以便在点击后将其添加到较小的用户列表中。



我是什么尝试过:



导入android.os.Bundle;

导入android.support.v7.app.AppCompatActivity;

导入android.text.Editable;

导入android.text.TextWatcher;

导入android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.EditText;

import android。 widget.ListView;

import android.widget.TextView;

import android.widget.Toast;



import java.util.ArrayList;

import java.util.Arrays;



import static com.example.android.loginregister.R。 id.list;



/ **

*由keaberry于2017年3月8日创建。

* /



公共类CreateList2扩展了AppCompatActivity im plements

AdapterView.OnItemClickListener {

String [] items;

ArrayList< string> listItems;

ArrayAdapter< string>适配器;

ListView listView;

EditText editText;



protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_create_list2);

listView =(ListView)findViewById(R.id.listview) );

editText =(EditText)findViewById(R.id.txtsearch);

initList();

editText.addTextChangedListener(new TextWatcher (){b / b
@Override

public void beforeTextChanged(CharSequence s,int start,int

count,int after){



}





@Override

public void onTextChanged (CharSequence s,int start,int before,int count){

if(s.toString()。equals()){

initList(); < br $> b $ b}

else {

searchItem(s.toString());

}

}



@Override

public void afterTextChanged(可编辑的){



}

});



}



public void searchItem(String textToSearch){

for(String item:items){

if(!item.contains(textToSearch)){

listItems.remove(item);

}

}



adapter.notifyDataSetChanged();



}

< br $>


public void initList(){

items = new String [] {Bacon,Milk,Cereal,Frozen Pizza,Sports Drinks,Cheese,Detergent,Chips,Pet Food};

listItems = new ArrayList<>(Arrays.asList(items));

adapter = new ArrayAdapter< string>(this,R.layout.item_list,R.id.txtitem,listItems);

listView.setAd apter(适配器);

listView.setOnItemClickListener(this);





}





@Override

public void onItemClick(AdapterView<?> parent,view view,int position,long id){

TextView temp =(TextView)视图;

String Value = listView.getItemAtPosition(position).toString();

Toast.makeText(getApplicationContext(),Value,Toast.LENGTH_SHORT)。show();

}

I have a large product list for a store. I want users to be able to click on items in the list so that it can be added into a smaller user list after it is clicked.

What I have tried:

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Arrays;

import static com.example.android.loginregister.R.id.list;

/**
* Created by keaberry on 3/8/2017.
*/

public class CreateList2 extends AppCompatActivity implements
AdapterView.OnItemClickListener {
String[] items;
ArrayList<string> listItems;
ArrayAdapter<string> adapter;
ListView listView;
EditText editText;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_list2);
listView=(ListView)findViewById(R.id.listview);
editText=(EditText)findViewById(R.id.txtsearch);
initList();
editText.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) {
if (s.toString().equals("")){
initList();
}
else{
searchItem(s.toString());
}
}

@Override
public void afterTextChanged(Editable s) {

}
});

}

public void searchItem(String textToSearch){
for (String item:items){
if(!item.contains(textToSearch)){
listItems.remove(item);
}
}

adapter.notifyDataSetChanged();

}


public void initList(){
items=new String[]{"Bacon", "Milk","Cereal","Frozen Pizza","Sports Drinks","Cheese","Detergent","Chips","Pet Food"};
listItems=new ArrayList<>(Arrays.asList(items));
adapter=new ArrayAdapter<string>(this, R.layout.item_list, R.id.txtitem, listItems );
listView.setAdapter(adapter);
listView.setOnItemClickListener(this);


}


@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView temp=(TextView) view;
String Value = listView.getItemAtPosition(position).toString();
Toast.makeText(getApplicationContext(), Value, Toast.LENGTH_SHORT).show();
}

推荐答案

到目前为止,您的代码仅在单击第一个列表时显示Toast。



您显然只有一个列表视图(R.id.listview - > listView)。



您需要将第二个列表视图添加到布局(R.layout.activity_create_list2),为该列表视图添加另一个类变量并获取你的onCreate方法中的listView2。



然后在你现有的onClick处理程序中执行添加到listView2的内容。鉴于你已经把它们放在一起,我认为你应该能够自己解决这个问题。



顺便提一下你的变量命名应该是真的遵循谷歌最佳实践,特别是非静态私有类变量如listView应该是mListView。这显然不会让你的应用程序变得生动,但更容易与他人共享代码(mListView中的m读作我的listView)。
So far your code is only showing a Toast when the first list is clicked.

You also have only one list view apparently (R.id.listview -> listView).

You need to add the second list view to the layout (R.layout.activity_create_list2), add another class variable for that list view and obtain that listView2 in your onCreate method.

Then in your existing onClick handler do the stuff to add to listView2. Given what you've already put together I think you should be able to work out how to do this yourself.

BTW Just to mention that your variable naming should really be following Google best practice, specifically non-static private class vars such as listView should be mListView. This clearly wouldn't make your app spring to life but makes it easier to share code with others (the "m" in mListView reads as "my listView").


这篇关于从大型产品列表转到较小的列表视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆