2013-06-26 2 views
0

У меня есть действие, которое использует setContentView для запуска списка, а затем у меня есть условие If-Else. В Если часть инструкции, я использую простой адаптер, чтобы поместить новый макет в список и другие данные из курсора. В части Else, я просто хочу поставить предложение на этикетке, чтобы предоставить некоторую информацию. Как я могу это сделать? Я пробовал параметры и текст, но они не работали. Я попытался установить еще один setcontentView, но он тоже не может работать.Что использовать для размещения макета в действии Android?

doMySearch() - это курсор, который извлекает данные из базы данных на основе ввода ключевого слова пользователем.

public void onPostExecute() { 
SimpleCursorAdapter adapter; 
Int count = doMysearch().getCount; 
If (count >= 1){ 
adapter=new SimpleCursorAdapter(this, R.layout.activity_results, 
doMySearch(), new String[] { 
    DB.COL_NAME, 
    DB.COL_CITY }, 
    new int[] { R.id.lblName, R.id.lblCity }, 
    0); 

setListAdapter(adapter); 
} 
Else { 
} 

Я просто хочу предложение, в котором говорится «Нет данных» для части Else. Благодарю.

+0

что в вашем 'layout.xml' – DevZer0

+0

если и хотят, чтобы показать два разных взгляда на макете и 2 разных макета, а затем создать 2 различную активность? – KOTIOS

+0

вы можете показать нам какой-то код? Что именно вы пытаетесь отобразить в ветке else? Должен ли он быть структурирован как список, но с другой информацией или совершенно другим видом? Возможно ли, вы хотите отобразить пустой текст, который говорит что-то вроде: «Нет данных?» – peshkira

ответ

1

Мне непонятно, что вы просите, но здесь мы идем.

В списках ListView для пустых списков есть пустая настройка, вам нужно добавить еще один пустой вид в ваш текущий макет. Тогда вы будете установить пустой макет вида в коде, как показано ниже:

//add to your layout 
<LinearLayout 
     android:id="@+id/empty" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="center" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="There is no item" > 
    </TextView> 

</LinearLayout> 


//set empty view 
ListView listView = (ListView) container.findViewById(R.id.list); 
LinearLayout emptyView = (LinearLayout) container.findViewById(R.id.empty); 
listView.setEmptyView(emptyView); 
+0

Хорошо, спасибо. Я дам ему попробовать. – androidnerd

+0

Спасибо! Я, наконец, получил работу по назначению с кодами, которые вы предоставили, хотя и с некоторыми изменениями. Спасибо. – androidnerd

0

Насколько я понимаю, метка не появляется из-за ListView, право `

EDIT: Хорошо, я думаю, что я получаю сейчас. Чтобы сделать это простым, вы можете скрыть свой ListView с помощью myList.setVisibility(View.GONE); Затем сделайте надменную надпись, видимую с myLabel.setVisibility(View.VISIBLE), которая уже содержит вашу строку ошибок.

Чем сложнее, как вы могли бы сделать StringArray, как это (например) в strings.xml

<string-array name="error"> 
     <item>No results found</item> 
</string-array> 

Тогда в вашем еще-блоке вы можете сделать somethink так:

ListView lv = (ListView) findViewById(R.id.myList); 
String[] content = getResources().getStringArray(R.array.error); 
ArrayAdapter<String> typeList = new ArrayAdapter<String>(this, R.layout.simple_list_item_custom, content); 
lv.setAdapter(typeList); 
+0

Хорошо, я добавил коды. – androidnerd

+0

Хорошо, обновил мой ответ в соответствии с этим –