Получение ссылки на внутренний контроль в спискеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Получение ссылки на внутренний контроль в списке

Сообщение Anonymous »

Я новичок в Android, и я прочитал несколько учебных пособий о Custom ListView, и я делаю приложение, чтобы манипулировать данными, я возобновил свою проблему с этим маленьким приложением. the screen is this:
Изображение

in this there are a listview and each item have a TextView and a EditText the one last control is for the user input a amount I need when the user press the button clear first save de amount info in the ArrayList, а затем очистите поля. Как я подхожу к этому
my code:

Activity_main.xml

Код: Выделить всё






< /code>
listview_item.xml







< /code>
mainactivity.java
package com.rimacy.preguntalistview;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList data = new ArrayList();
data.add(new Inventory("candies",0));
data.add(new Inventory("milk",0));
data.add(new Inventory("soda",0));
data.add(new Inventory("paper",0));
data.add(new Inventory("bags",0));
//...  the items are unknow in run time

MyAdapter adp = new MyAdapter(this,R.layout.listview_item,data);
ListView listView = (ListView)findViewById(R.id.listView1);
listView.setAdapter(adp);

Button btnClear = (Button) findViewById(R.id.btnClear);
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// set de value of each EditText to "amount" field in each object in the ArrayList "data"
// perform a clear of all EditText in the listview
// set the focus in the firs EditText
}
});

}
class Inventory{
String name;
Integer amount;

public Inventory(String name, Integer amount) {
this.name = name;
this.amount = amount;
}

public String getName() {
return name;
}
}
class MyAdapter extends ArrayAdapter{
private ArrayList items;
public MyAdapter(Context context, int resource, ArrayList items) {
super(context, resource, items);
this.items = items;
}
public View getView(int position, final View convertView, ViewGroup parent) {
View v=convertView;
TextView editText;
if (v == null){
LayoutInflater inflater =  LayoutInflater.from(getContext());
v = inflater.inflate(R.layout.listview_item, null);
}
editText = (TextView)v.findViewById(R.id.tv1);
editText.setText(items.get(position).getName());
return v;
}
}
}
< /code>
 update < /strong>

Я сделал это < /p>
** < /p>
package com.rimacy.preguntalistview;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class MainActivity extends AppCompatActivity {
ArrayList data = new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
data.add(new Inventory("candies",0));
data.add(new Inventory("milk",0));
data.add(new Inventory("soda",0));
data.add(new Inventory("paper",0));
data.add(new Inventory("bags",0));
//...  the items are unknow in run time
final MyAdapter adp = new MyAdapter(this,R.layout.listview_item,data);
final ListView listView = (ListView)findViewById(R.id.listView1);
listView.setAdapter(adp);
adp.notifyDataSetChanged();
Button btnClear = (Button) findViewById(R.id.btnClear);
if (btnClear!= null){
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// set de value of each EditText to "amount" field in each object in the ArrayList "data"
// perform a clear of all EditText in the listview
// set the focus in the firs EditText
for (Inventory i:data){
i.getTxt().setText("");
}
adp.notifyDataSetChanged();
}
});
}
}
class Inventory{
String name;
Integer amount;
EditText txt;
public void setName(String name) {
this.name = name;
}
public EditText getTxt() {
return txt;
}
public void setTxt(EditText txt) {
this.txt = txt;
}
public Inventory(String name, Integer amount) {
this.name = name;
this.amount = amount;
}
public String getName() {
return name;
}
}
class MyAdapter extends ArrayAdapter{
private ArrayList items;
public MyAdapter(Context context, int resource, ArrayList items1) {
super(context, resource, items1);
items = items1;
}
public View getView(int position, final View convertView, ViewGroup parent) {
View v=convertView;
TextView editText;
EditText txt;
if (v == null){
LayoutInflater inflater =  LayoutInflater.from(getContext());
v = inflater.inflate(R.layout.listview_item, null);
}
txt = (EditText)v.findViewById(R.id.edit1);
editText = (TextView)v.findViewById(R.id.tv1);
items.get(position).setTxt(txt);
editText.setText(items.get(position).getName());
return v;
}
}
}
Добавил нового участника в классе инвентаризации, чтобы сохранить ссылку на EditText, который назначается в событии GetView, и с помощью methos getTxt напомнить эту ссылку и вызовать метод SetText с пустой строкой, но он работает только тогда, когда я нажимаю кнопку дважды, почему?>

Подробнее здесь: https://stackoverflow.com/questions/374 ... a-listview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»