Android Studio, Search Activity (No data found massage) - android

I'm a beginner at Android development. I have a problem trying to show in a List view that the query doesn't bring any result. I just appear blank (nothing) without indications.
I'm using a Search dialog with customs suggestions, and when I start writing the query, the search starts suggesting, but when nothing match the query, no message appears.I want to create a massage that tells "no data found".
I've created a content provider, a custom suggest interface and a custom cursor adapter to query with a searchable activity an sqlite database.
All the app works perfect but the "no data" massage or toast.
Which part of the code you need?
Thanks

Add this in searchable class
mlistView.setEmptyView( findViewById( R.id.zero_result ) );
and this in xml layout file
<TextView android:id="#+id/zero_resultt"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="No match data"/>

Related

How to modify a ListView item in Android?

I'm starting learning Android and I want to know if there is some option in Android that let you modify each item or view (I don't know how it's named exactly, I mean each of the items from an ArrayList that you show in a ListView).
Well, I made a ListView that is going to show some books that were located in an ArrayList named "books".
I made a custom adapter that I associate to the ListView to show each item with the corresponding layout in the application. I also have a class "book" for each item that is going to be shown in the ListView.
Further, I made an Intent that I call from MainActivity with startForActivityResult(), that I process in Book class and that I return to MainActivity with all data of a book with the method setResult and got the information with onActivityResult() and the requestCode.
So I don't have any problem to add items to the ListView, just I have the problems if I want to modify some of the items (or views) that are located in the ListView (for example if I have title and author of a book, if I put some wrong information, I want have the option to change it).
I have that, in the same moment that you click on some of the items of the ListView, a new layout will be show to modify the information that it's wrong so I use the method setOnItemClickListener with onItemClick event on the custom adapter that I created before. Here it's where I call the new Intent to modify the wrong information with the method startActivityForResult().
I made the same as before to add a new item but, instead of add a new item with custom_adapter.addBook(title,author) I want to know if there is some option to made something like this: custom_adapter.modify(title,author) or custom_adapter.update(title,author), I mean, when you have modify all the items that were wrong of a book (for example an EditText that were "title") and you have all the information in the MainActivity class (because you returned it with setResult), how to put it again in the same item updating it in the custom_adapter and also in the ArrayList.
I searched it on the Internet but I didn't find anything.
I'm sorry if I have a poor English, but I expect that it can be understand.
Thank you very much!
If I am understanding your problem correctly - you could simply modify the ArrayList of type Book that is backing your ArrayAdapter.
So if you know what Book object you want to modify then you can simply make your changes to the Book object itself. As long as this Book is a reference to the same object that you originally added to the ArrayList you instantiated your ArrayAdapter with then you can then call custom_adapter.notifyDataSetChanged() to tell the adapter to redraw its childviews with the new data.
There are some good code samples on the Internet but you have to understand the code for your purposes. So...here is a start, look at Using an ArrayAdapter with ListView. The code shows the use of ArrayAdapter with getView() method. And I hope it shows how to define the listeners, which you need.
How about that for a start? Have fun...
Thank you very much for all help you gave to me. I'm very pleased with you. :)
Finally, I just send the info with a Bundle when I started the Intent, also with the position. And after, I just used this position to set the new info to my items (in my case, books).
Again, thank you very much ;)

Using text files and XML defined strings to populate lists

I am writing an application which contains a few simple views; first is just two buttons. each button leads to a map, and from this map is a button which opens a list of buildings on the site. From here the user will be able to select a building and view detailed information on it (much like a contacts list actually).
So far, I am able to populate the listview by creating the string array to populate it it directly within the activity, like so:
public class BuildingsActivity extends ListActivity {
static final String[] buildings=new String[]{
"Building 1",
"Building 2",
"Building 3",
"Building 4",
"Building 5"
};
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_buildings);
// Show the Up button in the action bar.
getActionBar().setDisplayHomeAsUpEnabled(true);
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,buildings));
}
This works all well and good for a 5 item list, but in it's final form, the list may contain up to a hundred buildings, and I have 2 concerns:
1) A one-hundred item long string array is going to look really gross defined in code like this
2) I am worried about how long it will take the application to open the activity if it has to generate such a large list of string values beforehand
To avoid this, I had the idea to define this string array in the strings.xml file and assign the strings to the list layout in the corresponding layout XML for the list activity. However, this so far doesn't seem to work; no errors but the android:entries command does not see to affect the layout at all. This is the XML. If anybody has knowledge of populating a list this way, I would appreciate your answers.
<RelativeLayout 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"
tools:context=".BuildingsActivity" >
<ListView
android:id="#android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="#array/buildings">
</ListView>
</RelativeLayout>
My other alternative is to retrieve it from a text file, which I will have to do for building details (as the volume of text is too large to bother saving as strings) but wanted to avoid for the list. Admittedly, I have not heavily researched this route (both because I had not really wanted to use it yet and based on what I have seen on other forums it looks difficult, but if there is a lot of support for this method then I will certainly appreciate any advice in using it.
Forgive me if any of this has already been covered in other threads. I DID search for similar topics, but nobody seemed to want to populate a list this way and a lot of the language from their questions went over my head (I am very new...this is my first real application, besides having worked through some of the tutorials on the developer website.
Java's ArrayList implements the Serializable interface, which allows you to save and load an array to and from a pure binary format using the functions writeObject and readObject. This page should be enough to get you started.
If you want to populate the listView with from a resource file you just have to use this in your code:
String[] values = getResources().getStringArray(R.array.<input_file>);
Once you have the values loaded you just have to assign it to the ArrayAdapter like this:
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
The second parameter is a predefined layout of android SDKs, you could use your own layout.
If your String[]'s ceiling is 100, I don't see it as a problem to just generate the array and pass it to the adapter. As for your concern about the code looking gross, have you considered storing this information in a database and then requesting it? For instance, you could have a Building Entity, with all of its information and persist it to MySQL using OrmLite. http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite_1.html#SEC1 You could then write a getter than returns an array representation to avoid the ugly code.

show data in list view in Sales Force?

I am new to Sales Force
I want display list in Android program based on my Sales Force object data i was done the following steps:
based on call back and consumer key i successfully lo-gin to the API.and i navigate though all the controls in the trail version
how can i display the list of the items in Android Program is there any sample program to fetch and display data in the Android List view.please send any useful links to me to achieve this.
Thanks in Advance.....
if you want to display the list of items using ListView .you can write a DataAdapter which extend BaseAdapter ,in the construtor method ,you set the data that you want to display as the parameter . then overwrite getView() method , you will make the item displayed .
key words: ListActivity , BaseAdapter.

How to add search option in android application?

I am developing an android application in android in which i want to use search option with which i can search particular data item either from web services or from a database ?
Create an XML file named list_item.xml and save it inside the res/layout/ folder. Edit the file to look like this:
?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp"
android:textColor="#000">
</TextView>
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Country" />
<AutoCompleteTextView android:id="#+id/autocomplete_country"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"/>
</LinearLayout>
java
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES);
textView.setAdapter(adapter);
}
Inside the HelloAutoComplete class, add the string array:
static final String[] COUNTRIES = new String[] {
"Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",};
Searching inside your database
SQLLite provides built in functionality to allow for full text searching
http://bakhtiyor.com/2009/08/sqlite-full-text-search/
From a webservice
As far as searching via a webservice normally you simply send the search terms to the server via your webservice, the server performs the search and you parse the response.
Lucene
Unless what you are REALLY asking about is a search index, where you may have keywords that allows you to quickly index a large database, or a webservice as the data may not be duplicated between the two.
In which case you can use LUCENE
http://www.javacodegeeks.com/2010/05/introduction-to-apache-lucene-for-full.html
However to get lucene to work with Android you may need to check out the source and remove a few depenencies with RMI.
See the bottom of this page for the solution (only need to remove 2 files and it should compile and work with Android).
http://groups.google.com/group/android-developers/browse_thread/thread/601329551a87e601
How to implement the search dialog box
The developers guide only gives you enough to start implementing the interface to your search dialog box. Read through the example source code (posted below) to see how it fits together into an application.
Android Developers Guide
http://developer.android.com/guide/topics/search/search-dialog.html
Example Code
http://sampleandroidapps.com/searchable-dictionary-source-code-download.html
Use edittext with a button or auto complete text view with a button.
Load data from a file or database for the auto complete part. Once you obtain the data, pass it to the web-service call or search your local database for the same.
Hope I got the requirement right and helped you.
you can use the search dialog; see the following link:
http://developer.android.com/guide/topics/search/search-dialog.html
also:
http://mobileorchard.com/android-app-development-implementing-search-activities/

Adding contacts to list view?

I have a ListView and I have a contact picker. What I want to do is when I pick a contact I want the contact to show up in a list view and be saved in that list view. so far I have
ListView emailEntry = (ListView) findViewById(R.id.list);
emailEntry.setFilterText(Number);
if (Number.length() == 0) {
Toast.makeText(this, "No number found for contact.",
Toast.LENGTH_LONG).show();
}
This is the Java text were the number gets called into the list view
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="#+id/list"
/>
this is obviously my .XML file.
I get no force closing. the problem is the contact doesn't get called into the list view
Could you provide more information about what you are trying to do? What is your data source?
I have never used ListView. As a consequence, I probably missed the point but here is my two cents.
Based on my humble assumptions, why don't you use a ListActivity and a custom (List)Adapter to display your data? Then you could implement onListItemClick() and use startActivity() (with the proper intent) or fire a toast or whatever is usefull. My opinion is that your problem is a data-centric problem, not a view-centric one.
Best Regards,
Renaud

Categories

Resources