Java 将ArrayList刷新到ClickListener中
我以前做过一个(删除的),但我认为它很混乱,很难理解,所以这个问题是关于同样的问题,但比以前简单 我做了一个同样情况的示例项目,有以下几项:Java 将ArrayList刷新到ClickListener中,java,android,arraylist,Java,Android,Arraylist,我以前做过一个(删除的),但我认为它很混乱,很难理解,所以这个问题是关于同样的问题,但比以前简单 我做了一个同样情况的示例项目,有以下几项: 一个ArrayList,包含我的所有项目 另一个包含筛选项的ArrayList 用于筛选项目的集合 对于我的集合上的每个过滤项,我创建一个新视图以添加到我的主视图中。这些新视图有一个OnClickListener,理论上显示所有过滤的项 问题是当我点击任何视图时,结果都是一样的 我的代码: public class MainActivity exten
- 一个ArrayList,包含我的所有项目
- 另一个包含筛选项的ArrayList
- 用于筛选项目的集合
集合
上的每个过滤项,我创建一个新视图以添加到我的主视图中。这些新视图有一个OnClickListener
,理论上显示所有过滤的项
问题是当我点击任何视图时,结果都是一样的
我的代码:
public class MainActivity extends Activity {
private List<Integer> myList = new ArrayList<Integer>();
private List<Integer> myFinalList;
private Set<Integer> setOfAallCodes = new HashSet<Integer>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myList.add(1);
myList.add(1);
myList.add(1);
myList.add(2);
myList.add(2);
myList.add(2);
listItems();
}
public void listItems() {
myFinalList = new ArrayList<Integer>();
for (Integer element : myList) {
setOfAallCodes.add(element);
}
Object[] arrayOfAllCodes;
arrayOfAllCodes = setOfAallCodes.toArray();
for (Object i : arrayOfAllCodes) {
myFinalList.clear();
int actual = (Integer) i;
for (Integer element : myList) {
if (element == actual) {
myFinalList.add(element);
}
}
LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
View v = vi.inflate(R.layout.button_view, null);
Button btnTest = (Button) v.findViewById(R.id.mega_button);
View insertPoint = findViewById(R.id.conteudo);
((ViewGroup) insertPoint).addView(v);
btnTest.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("Result: " + myFinalList);
}
});
}
}
}
public class MainActivity extends Activity {
private List<Integer> myList = new ArrayList<Integer>();
private Set<Integer> setOfAallCodes = new HashSet<Integer>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myList.add(1);
myList.add(1);
myList.add(1);
myList.add(2);
myList.add(2);
myList.add(2);
listItems();
}
public void listItems() {
for (Integer element : myList) {
setOfAallCodes.add(element);
}
Object[] arrayOfAllCodes;
arrayOfAllCodes = setOfAallCodes.toArray();
for (Object i : arrayOfAllCodes) {
LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
View v = vi.inflate(R.layout.button_view, null);
Button btnTest = (Button) v.findViewById(R.id.mega_button);
View insertPoint = findViewById(R.id.conteudo);
((ViewGroup) insertPoint).addView(v);
final int atual = (Integer) i;
btnTest.setOnClickListener(new OnClickListener() {
List<Integer> myFinalList = new ArrayList<Integer>();
@Override
public void onClick(View v) {
for (Integer integer : myList) {
if (atual == integer) {
myFinalList.add(integer);
}
}
System.out.println(myFinalList);
myFinalList.clear();
}
});
}
}
公共类MainActivity扩展活动{
private List myList=new ArrayList();
私人名单myFinalList;
私有集合setOfAallCodes=newHashSet();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
添加(1);
添加(1);
添加(1);
添加(2);
添加(2);
添加(2);
listItems();
}
公共物品清单(){
myFinalList=newArrayList();
for(整型元素:myList){
集合所有代码。添加(元素);
}
对象[]数组错误代码;
arrayOfAllCodes=setOfallCodes.toArray();
对于(对象i:arrayOfAllCodes){
myFinalList.clear();
int实际值=(整数)i;
for(整型元素:myList){
如果(元素==实际值){
添加(元素);
}
}
LayoutFlater vi=(LayoutFlater)getApplicationContext().getSystemService(
上下文。布局(充气机和服务);
视图v=vi.充气(R.布局.按钮\视图,空);
按钮btnTest=(按钮)v.findViewById(R.id.mega_按钮);
视图插入点=findViewById(R.id.conteudo);
((视图组)insertPoint.addView(v);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
System.out.println(“结果:+myFinalList”);
}
});
}
}
}
两个按钮的结果是:[2,2,2]
怎么了?如何使按钮显示结果?我将试一试。这不足以解决所有问题:
public class MainActivity extends Activity {
private List<Integer> myList = new ArrayList<Integer>();
private List<Integer> myFinalList;
private Set<Integer> setOfAallCodes = new HashSet<Integer>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myList.add(1);
myList.add(1);
myList.add(1);
myList.add(2);
myList.add(2);
myList.add(2);
listItems();
}
public void listItems() {
myFinalList = new ArrayList<Integer>();
for (Integer element : myList) {
setOfAallCodes.add(element);
}
Object[] arrayOfAllCodes;
arrayOfAllCodes = setOfAallCodes.toArray();
for (Object i : arrayOfAllCodes) {
myFinalList.clear();
int actual = (Integer) i;
for (Integer element : myList) {
if (element == actual) {
myFinalList.add(element);
}
}
LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
View v = vi.inflate(R.layout.button_view, null);
Button btnTest = (Button) v.findViewById(R.id.mega_button);
View insertPoint = findViewById(R.id.conteudo);
((ViewGroup) insertPoint).addView(v);
btnTest.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("Result: " + myFinalList);
}
});
}
}
}
public class MainActivity extends Activity {
private List<Integer> myList = new ArrayList<Integer>();
private Set<Integer> setOfAallCodes = new HashSet<Integer>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myList.add(1);
myList.add(1);
myList.add(1);
myList.add(2);
myList.add(2);
myList.add(2);
listItems();
}
public void listItems() {
for (Integer element : myList) {
setOfAallCodes.add(element);
}
Object[] arrayOfAllCodes;
arrayOfAllCodes = setOfAallCodes.toArray();
for (Object i : arrayOfAllCodes) {
LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
View v = vi.inflate(R.layout.button_view, null);
Button btnTest = (Button) v.findViewById(R.id.mega_button);
View insertPoint = findViewById(R.id.conteudo);
((ViewGroup) insertPoint).addView(v);
final int atual = (Integer) i;
btnTest.setOnClickListener(new OnClickListener() {
List<Integer> myFinalList = new ArrayList<Integer>();
@Override
public void onClick(View v) {
for (Integer integer : myList) {
if (atual == integer) {
myFinalList.add(integer);
}
}
System.out.println(myFinalList);
myFinalList.clear();
}
});
}
}
公共类MainActivity扩展活动{
private List myList=new ArrayList();
私有集合setOfAallCodes=newHashSet();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
添加(1);
添加(1);
添加(1);
添加(2);
添加(2);
添加(2);
listItems();
}
公共物品清单(){
for(整型元素:myList){
集合所有代码。添加(元素);
}
对象[]数组错误代码;
arrayOfAllCodes=setOfallCodes.toArray();
对于(对象i:arrayOfAllCodes){
LayoutFlater vi=(LayoutFlater)getApplicationContext().getSystemService(
上下文。布局(充气机和服务);
视图v=vi.充气(R.布局.按钮\视图,空);
按钮btnTest=(按钮)v.findViewById(R.id.mega_按钮);
视图插入点=findViewById(R.id.conteudo);
((视图组)insertPoint.addView(v);
最终整数=(整数)i;
setOnClickListener(新的OnClickListener(){
List myFinalList=new ArrayList();
@凌驾
公共void onClick(视图v){
for(整数:myList){
如果(atual==整数){
添加(整数);
}
}
System.out.println(myFinalList);
myFinalList.clear();
}
});
}
}
}请删除其他问题以避免重复,好吗?提前谢谢你!这有很多问题,我不知道从哪里开始。。。首先确定:结果是相同的,因为您总是打印相同的结果。。。您希望得到什么结果?是的,这是我想要的输出。