0

ライブラリを更新するために chrisbanesプッシュ ダウンを使用しているため、通常のリストビューを削除して、新しいリストビューに置き換える必要がありました。その後、リストビュー項目を長押ししても機能せず、常にクラッシュします。彼は私が実際にクリックしている情報を取得していないため、info は常に null を返すようです。これは悪いことです。自分で修正しようとしましたが、成功しませんでした..どんな助けでも大歓迎です。

xml レイアウト:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >


<ProgressBar
    android:id="@+id/loadingbar"
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:visibility="gone" />

<TextView
    android:id="@+id/loading_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="Loading... Hang in there!"
    android:visibility="gone" />

 <com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/animelist"
android:layout_height="fill_parent"
android:layout_width="fill_parent" />

そしてロングプッシュコード:

/** This will be invoked when an item in the listview is long pressed */
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {

        Log.d("readInfo", "LONG CLICK!!"); 
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
        Log.d("prereadlongclickinfo", "test"); 
        favorites = readFavoritesList();
        parsedFavorites = parse(favorites);
        Log.d("readlongclickinfo", "test2"); 
        Log.d("readlongclickinfo", "test: "); 

        /*boolean favorited = false;
        for(String favorite : parsedFavorites){
            if(favorite.equals(anime_list.get(info.position).seriaal)){
                menu.add(0, 2, 1, R.string.removeFavorite);
                favorited = true;
                break;
            }
        }
        if(!favorited) {
            menu.add(0, 1, 1, R.string.addFavorite);
            menu.add(0, 3, 1, R.string.addBlacklist);
        }*/
        menu.add(0, 4, 1, R.string.openWebpage);
        super.onCreateContextMenu(menu, v, menuInfo);
    }

また、ロングプッシュで使用する必要があるすべての listitem 行項目に関するすべての情報を格納するカスタム アダプターを使用しています。

4

1 に答える 1

5

誰も助けてくれなかったのは悲しい。

さて、何時間もの調査を行った後、途方もなく簡単な解決策を見つけました。今後同じような悩みを抱えている方の参考になれば幸いです。

基本的に、私は空の ListView を作成し、pushDownListView が持っていたすべての値をそれに与えました。その後、作成機能に登録しました。数行のコード:

pullToRefreshView = (PullToRefreshListView) findViewById(R.id.animelist);
        ListView lv1 = pullToRefreshView.getRefreshableView();

    registerForContextMenu(lv1);

    lv1.setAdapter(anime_list_adapter);

    registerForContextMenu(lv1);
于 2013-05-19T16:20:45.733 に答える