Ich versuche zu speichern oder Daten von ListView
zu erhalten, die EditText
enthält. Wenn ich versuche, Daten von ListView
mit Zeilen über Bildschirmgröße zu speichern oder zu erhalten, erhalte ich den Fehler. Ich weiß warum, aber ich weiß nicht, wie ich es beheben kann. Der Grund ist, dass sie die Ansichten wiederverwenden.Wie kann ich Daten in Listview speichern, wenn deren Größe die Bildschirmgröße überschreitet?
Hier ist das Beispiel, was ich tun möchte. Wenn es 5 Zeilen im Bildschirm und 1 Reihe außerhalb des Bildschirms gibt, wie kann ich dann auf die 6. Zeile zugreifen?
public void saveData(){
StringBuffer buffer = new StringBuffer();
int count = listView.getCount();
for(int i=0 ;i < count ;i++) {
View child = listView.getChildAt(i);
TextView setText1 = (TextView)child.findViewById(R.id.TextView1);
EditText text = (EditText) child.findViewById(R.id.setText1);
String content1 = setText1.getText().toString().trim();
String content2 = text.getText().toString().trim();
buffer.append(content1);
buffer.append(",");
buffer.append(content2);
buffer.append(",");
}
I Speichern von Daten in Stringbuffer
.
public class CustomAdapter extends ArrayAdapter<String> {
public CustomAdapter(Context context, List<String> num_set) {
super(context, R.layout.custom_row ,num_set);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(getContext());
View CustomView = inflater.inflate(R.layout.custom_row ,parent , false);
String[] num = getItem(position).split(",");
TextView setText1 = (TextView)CustomView.findViewById(R.id.TextView1);
EditText setText2 =(EditText)CustomView.findViewById(R.id.setText2);
setText1.setText(num[0]);
setText2.setText(num[1]);
return CustomView;
}
}
hier ist der logcat. verursacht durch:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
hier ist die custom_row.xml
<?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"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:id="@+id/TextView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text" />
<EditText
android:id="@+id/setText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:enabled="true"
android:inputType="numberDecimal"
android:textSize="24sp" />
</LinearLayout>
teilen Sie Ihren Adapter-Code. –
teilen Fehler logcat. –
@jankigadhiya Ich habe es getan –