OnListItemClick не стреляет - PullRequest
       13

OnListItemClick не стреляет

0 голосов
/ 09 декабря 2011

Я пытаюсь настроить OnItemClickListener для ListView, который был создан внутри основного действия (расширение Activity).Следующий код не стреляет.Почему не запускается onItemClick?

Main.java

import java.io.InputStream;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

public class Main extends Activity {
    /** Called when the activity is first created. */
    List<Title> titleList;
    ListView lv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // set list view
        setContentView(R.layout.listview);
        setTitle("TITLE");

        // Create Parser for raw/countries.xml
        TitleParser titleParser = new TitleParser();
        InputStream inputStream = getResources().openRawResource(R.raw.titles);

        // Parse the input stream
        titleParser.parse(inputStream);

        // Get Titles
        titleList = titleParser.getList();

        // Create a customized ArrayAdapter
        TitleArrayAdapter adapter = new TitleArrayAdapter(
                getApplicationContext(), R.layout.title_listitem, titleList);

        // Get reference to ListView holder
        lv = (ListView) this.findViewById(R.id.titleLV);

        // Set the ListView adapter
        lv.setAdapter(adapter);

        // on list item click
        AdapterView.OnItemClickListener listener = new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                    long arg3) {
                Title title = (Title) lv.getItemAtPosition(position);
                try{
                    Class<?> challengeClass = Class.forName("com.glvangorp.app.TITLECHALLENGE");
                    Intent challengeIntent = new Intent(Main.this, challengeClass);
                    challengeIntent.putExtra("challenge", title.challenge);
                    challengeIntent.putExtra("title", title.resourceId);
                    startActivity(challengeIntent);
                } catch(ClassNotFoundException e){
                    Log.d("TAG", e.getMessage());
                    e.printStackTrace();
                }
            }
        };

        lv.setOnItemClickListener(listener);        
    }
}

listview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ListView
        android:id="@+id/titleLV"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    </ListView>
</LinearLayout>

Ответы [ 2 ]

0 голосов
/ 09 декабря 2011

Возможно, он вызывается, но вы просто получаете ClassNotFoundException, поэтому вы не знаете, делает ли он что-нибудь в OnItemClick ... Почему бы вам не поместить Log.d("TAG", e.getMessage); внутри

поймать оговорку.

0 голосов
/ 09 декабря 2011

одна из причин, по которой никто не звонит, - это то, что элемент списка был установлен на кликабельный false. или в элементе списка вы установили прослушиватель щелчка или касания с возвращением true (сделайте так, чтобы он возвращал false, если вы написали).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...