Rumah > Soal Jawab > teks badan
How to remove the seperator line in footerLayout
? I have a footerLayout
below the listView
, used to display the totalAmount as shown below. If I click the seperator line in footerLayout
, my app crashed.
My MainActivity
AllAdapter obj = new AllAdapter(getApplication(), search, listview,imageView,text,button);
footerLayout = (LinearLayout) getLayoutInflater().inflate(R.layout.under_listview, null);
totalAmount = (TextView) footerLayout.findViewById(R.id.amount);
LogCat error
java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
at java.util.ArrayList.get(ArrayList.java:304)
at com.example.tony.monthlyexpenses.adapter.AllAdapter.getItem(AllAdapter.java:61)
at com.example.tony.monthlyexpenses.QuickExpenses$1.onItemClick(QuickExpenses.java:88)
at android.widget.AdapterView.performItemClick(AdapterView.java:301)
The error pointed to listView
onClickListener
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> listView, View view, final int position, long id) {
mClickedPosition = position;
Expenses o = (Expenses) obj.getItem(position);
String day = o.getDate();
}
});
AllAdapter
public Expenses getItem(int position) {
return search.get(position);
}
The footerLayout is supposed to be displayed outside the listView, not inside. How can I get rid of this ?
I also have activity_main.xml
, AllAdapter
class, all_adapter.xml
for ListView
and also under_listview.xml
for the footerLayout
.
activity_main
AllAdapter
under_listview
How to move the footerLayout out from the ListView ?
I add android:footerpidersEnabled="false"
now become like this
But still clickable !!!
谁知道问题出在哪?
footerLayout
被按时如何不出现灰色?
ringa_lee2017-04-17 18:03:43
adalah masalah yang sangat mudah tetapi terdedah kepada ralat Selepas menambah footer
, kuantiti listview item
anda ialah 3
, tetapi adapter
daripada viewcount
sebenarnya tidak menjadi 3
, jadi Apabila. anda klik pengaki, obj.getItem(2)
dilaksanakan, yang mesti merupakan tatasusunan di luar sempadan. 对于添加了header或footer的listview
, cara yang betul untuk mendapatkan semula item hendaklah
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> listView, View view, final int position, long id) {
Expenses o = (Expenses) listView.getAdapter().getItem(position);
if(o != null){
mClickedPosition = position;
//Expenses o = (Expenses) obj.getItem(position);
String day = o.getDate();
}
}
});
header或footer属于AdapterView的子view
, listView.getAdapter().getItem(position);
boleh memastikan anda tidak melepasi sempadan apabila mengambil kedudukan 2, dan kemudian membuat penghakiman batal objek.
天蓬老师2017-04-17 18:03:43
Anda tidak boleh menggunakan setOnItemClickListener sebagai acara klik footview saya rasa anda harus menetapkannya secara berasingan
Sebagai contoh, footview.setonClickListener(OnClickListener baharu{});
伊谢尔伦2017-04-17 18:03:43
Subskrip tatasusunan anda di luar had saiz tatasusunan anda ialah 2, jadi subskrip yang sepadan hanya boleh 0 dan 1, tetapi anda menggunakan 2 apabila menggunakannya. Ralat menunjukkan bahawa anda mempunyai indeks yang tidak sah baris 61 dan 88 sendiri untuk melihat sama ada terdapat mana-mana tempat di mana indeks adalah 2 dipanggil
伊谢尔伦2017-04-17 18:03:43
Untuk mengalihkan footerLayout
keluar daripada listView
ditulis sebagai
listview.addFooterView(footerLayout, null, false);