android - Error: java.lang.IndexOutOfBoundsException: Invalid index 2
PHP中文网
PHP中文网 2017-04-17 18:01:43
0
4
620

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被按时如何不出现灰色?

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(4)
左手右手慢动作

est un problème très simple mais sujet aux erreurs. Après avoir ajouté footer, la quantité de votre listview item est 3, mais le adapter de viewcount ne devient pas réellement 3, donc Quand vous cliquez sur le pied de page, obj.getItem(2) est exécuté, ce qui doit être une exception hors limites du tableau. 对于添加了header或footer的listview, la bonne façon de récupérer l'article devrait être

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); peut garantir que vous ne franchissez pas la frontière lorsque vous prenez la position 2, puis effectuez un jugement nul d'objet.

Peter_Zhu

Vous ne pouvez pas utiliser setOnItemClickListener comme événement de clic de footview. Je pense que vous devriez le définir séparément
Par exemple, footview.setonClickListener(new OnClickListener{});

伊谢尔伦

L'indice de votre tableau est hors limites. La taille de votre tableau est de 2, donc les indices correspondants ne peuvent être que 0 et 1, mais vous avez utilisé 2 lors de son utilisation. L'erreur montre que vous avez un index non valide. les lignes 61 et 88 vous-même pour voir s'il y a un endroit où l'index est 2 est appelé

伊谢尔伦

Déplacer footerLayout hors de listView s'écrit

listview.addFooterView(footerLayout, null, false);

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal