3

これを検索しようとしましたが、適切なヘルプを取得できませんでした。リストビューの最初の項目を修正し、その後データベースからデータを追加しようとしています。この種の動作を表示することに成功しましたが、問題が発生するのはリストビューでアイテムをクリックすると、クリックした正しいアイテムが表示されません...次のようにスニペットcopyFetchedDataにはデータベースからのデータがあります

for(int i = 0;i<copyFetchedData.size();i++){


    recentSearchedList.add(i, copyFetchedData.get(i).getName());
    selectedAdapter.notifyDataSetChanged();
}

最近の検索リスト.add(0、 "現在地");

上記のスニペットでは、最後の行が追加された要素の位置を上書きし、現在地を最初の位置に配置します。次に、onitemclickのスニペットは次のようになります。

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {



    if (displayList == arg0) {

        if(position == 0){
            editLocation.setText("");
        }
        else{
            String fetchedName = (String) displayList.getItemAtPosition(position);
            Toast.makeText(getApplicationContext(), "Name is "+fetchedName, Toast.LENGTH_LONG).show();
            Constants.searchedLocLat = copyFetchedData.get(position).getLat();
            Constants.searchedLocLon = copyFetchedData.get(position).getLon();
            Constants.searchedLocName = copyFetchedData.get(position).getName();            
            editLocation.setText(Constants.searchedLocName);    
        }

    }


}

これを使用して取得した出力は、間違った位置の要素をフェッチします。位置0に要素を強制的に追加するため、この種の動作が発生します。誰かが正しい方法を教えてください。

4

1 に答える 1

4

あなたはそれをするために使うことができますaddHeaderView()

        ListView lv = (ListView)findViewById(R.id.listview1); //your listview object
        View hvw = findViewById(R.id.listrow);
        //Suppose you have one textview in that Row
        TextView tv = hvw.findViewById(R.id.tv1); // get textview object
        tv.setText("Your first item value"); // set text
        lv.addHeaderView(hvw); // add header view
于 2012-07-02T07:11:03.633 に答える