2014-01-02 3 views
0

im пытается выполнить операцию, которая ищет базу данных на основе входной строки, а затем возвращает результаты в виде списка. Тем не менее, все это работает, мои элементы списка не доступны для просмотра. Я попытался изменить атрибуты фокуса и кликабеля, но до сих пор ничего не работало.Элемент ListView не доступен для просмотра

Главная XML (add_friend_layout.xml):

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


<LinearLayout android:id="@+id/AddFriendHeaderLayout" 
     android:layout_marginTop="3dip" 
     android:layout_height="45dip" 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:gravity="center"> 
     <EditText 
      android:id="@+id/et_SearchFriend" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="20dp" 
      android:ems="10" 
      android:inputType="text" /> 

     <Button 
      android:id="@+id/bt_SearchFriend" 
      android:layout_width="wrap_content" 
      android:layout_height="40dip" 
      android:focusable="false" 
      android:icon="@android:drawable/ic_search_category_default" 
      android:text="Search" > 

     </Button> 

    </LinearLayout> 
    <LinearLayout android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_marginTop="60dip" 
     android:layout_marginBottom="5dip" 
     android:layout_alignParentBottom="true" 
     android:layout_above="@+id/AddFriendHeaderLayout" 
     android:id="@+id/searchFriendFooterLayout"> 

     <ListView 
      android:id="@android:id/list" 
      android:layout_width="match_parent" 
      android:clickable="true" 
      android:layout_height="wrap_content"> 

     </ListView> 
    </LinearLayout> 

</RelativeLayout> 

ListView XML (single_listview_layout.xml):

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

<TextView 
    android:id="@+id/tv_list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp" 
    android:textSize="20sp" > 


</TextView> 
</LinearLayout> 

Главная Java Функция (SearchFriendActivity.java):

public class SearchFriendActivity extends ListActivity { 

//Progress Dialog 
private ProgressDialog pDialog; 
private Button bt_searchFriend; 
private EditText et_Search_String; 
private ListView tv_listview; 

String[] arrFriends; 
String[] arrUserId; 


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

    try{ 
     setContentView(R.layout.add_friend_layout); 


     bt_searchFriend= (Button) findViewById(R.id.bt_SearchFriend); 
     et_Search_String = (EditText) findViewById(R.id.et_SearchFriend); 
     tv_listview = (ListView) findViewById(R.id.tv_list); 


     String searchString=""; 

     //searchString = String.valueOf(et_Search_String.getText()); 
     Log.i ("log_search","value of searchString: " + searchString); 

     bt_searchFriend.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       try{ 



        searchFriends aTask = new searchFriends(); 

          aTask.execute(String.valueOf(et_Search_String.getText())); 
        String rResult = aTask.get(); 

        // Convert aResult to array 
        arrFriends = convertJSONData(rResult); 
        arrUserId = convertJSONDataToUserArray(rResult); 


        setListAdapter(new ArrayAdapter<String> 
                (getBaseContext(),  
                R.layout.single_listview_layout, 
          R.id.tv_list, 
          arrFriends)); 

       }catch(Exception e){ 
        Log.e ("log_search_load",e.toString()); 
       } 
      } 
     }); 


     tv_listview = getListView(); 


     //handler for List Item click 
     tv_listview.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 
       // When clicked, show a toast with the TextView text 
       Toast.makeText(getApplicationContext(), 
         "Friend request sent for " + 
              ((TextView) view).getText(), 
         Toast.LENGTH_SHORT).show(); 

       Log.i("log_search_listclick", "Listview clicked"); 
      } 
     }); 

    }catch(Exception e){ 
     Log.e ("log_search_load2",e.toString()); 
    } 
} 

ответ

-1

Во-первых, не используйте фокусируемые и интерактивные. Когда вы используете setOnclick или другое, они автоматически создаются.

Во-вторых, удалите кеш-кеш и запустите приложение. Потому что, когда создаваемая проблема программа будет работать, и вы не можете понять, где проблема.

===> В-третьих < ==== вы привыкли (tv_listview= ...) второй дважды

  1. tv_listview = (ListView) findViewById(R.id.tv_list);
  2. tv_listview = getListView();

тогда вы пытаетесь tv_listview.setOnItemClickListener..... Если второе представление не является первым представлением seton, не работающим над «R.id.tv_list».

+0

Спасибо за отзыв. Я попытался удалить tv_listview = getListView(), но это не помогло. Я удалил блок try/catch, как вы предлагали, и приложение выйдет из строя. Я выделил его для создания tv_listview.setOnItemClickListener. Если я удалю его, приложение будет работать нормально. Если я добавлю его обратно, приложение завершится с ошибкой nullpointer, даже если функция пуста. Есть идеи? – user3034017

+0

ОК - так я понял, что я связывал tv_listview с объектом textview в файле def def xml вместо представления списка. Как только я исправил это, nullpoint не исчез. Мне все еще не удалось получить представление списка для выполнения функции onclick. – user3034017

+0

okey сейчас попробуйте очистить Toast сообщение. Затем запустите приложение. Если вы не видите никаких проблем, проблема в Toast (==> getApplicationContext() <==, ......); – utrucceh

Смежные вопросы