【问题标题】:Adding search function to android app. Being able to search list将搜索功能添加到 Android 应用程序。能够搜索列表
【发布时间】:2015-12-15 17:46:39
【问题描述】:

我目前有一个简单的应用程序,可以在gridView 中显示来自url 的新闻文章。我在主菜单xml 中添加了一个搜索图标,但我不知道如何让搜索功能正常工作。如果用户搜索的字符串与文章标题匹配,我只需要它在GridView 中显示相关文章。任何帮助将不胜感激,我不知道如何开始!

我当然还有其他文件,如果您需要查看,请告诉我,我不确定有什么帮助。

ActivityMain.java

public class MainActivity extends AppCompatActivity {

private List<NewsRecord> newsListData = new ArrayList<NewsRecord>();

private GridView newsListView;

private NewsListAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

GridView newsListView = (GridView) findViewById(R.id.newsFeedList);

adapter = new NewsListAdapter(this, R.layout.adapter_news_list,  newsListData, this);

newsListView.setAdapter(adapter);

newsListView.setOnItemClickListener(itemClicked);

nextStart = 0;
updateListData(nextStart, 20);
}

public int nextStart = 0;

public void updateListData(int StartPoint, int count){
String url = "http://www.efstratiou.info/projects/newsfeed/getList.php?        start=" + StartPoint + "&count=" + count;

EDANewsApp app = EDANewsApp.getInstance();

JsonArrayRequest jsonRequest = new JsonArrayRequest(url, listener, errorListener);
app.requestQueue.add(jsonRequest);

nextStart +=count;
}

@Override
public boolean onCreateOptionsMenu (Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}

main_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto">

<item
    android:id="@+id/action_about"
    android:orderInCategory="10"
    app:showAsAction="never"
    android:title="About"/>

<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    app:showAsAction="never"
    android:title="Settings" />

 <item android:id="@+id/action_search"
    android:title="Search"
    android:icon="@android:drawable/ic_menu_search"
    app:showAsAction="ifRoom|collapseActionView"
    app:actionViewClass="android.support.v7.widget.SearchView"
    android:textColor="#FFF"
    />

</menu>

activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/newsListItem"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:context=".MainActivity">



 <GridView
    android:id="@+id/newsFeedList"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:verticalSpacing="0dp"
    android:horizontalSpacing="0dp"
    android:stretchMode="columnWidth"
    android:numColumns="2"/>

</FrameLayout>

【问题讨论】:

标签: java android xml


【解决方案1】:

好的,我假设以下是您的NewsRecord.java

public class NewsRecord {

    private String articleTitle;

    public String getArticleTitle() {
        return articleTitle;
    }

    public void setArticleTitle(String articleTitle) {
        this.articleTitle = articleTitle;
    }
}

这是您将用于搜索的代码

/**
 * @param list - this is the Input list in which you want to look up the search text
 * @param string - this is the string which would be looked up in the list
 * @return this method returns list of NewsRecord of NewsRecord which contains search string in thier article 
 * */
private static ArrayList<NewsRecord> searchInList(ArrayList<NewsRecord> list, String string) {
    // TODO Auto-generated method stub
    ArrayList<NewsRecord> temp = new ArrayList<NewsRecord>();

    for (NewsRecord item : list) {
        if (item.getArticleTitle().contains(string)) {
            temp.add(item);
        }
    }

    if (!temp.isEmpty()) {
        return temp;
    }

    return null;
}

以下是如何使用此方法的代码

假设您有一个editText,您将从中搜索..

String searchArticle = editText.getText().toString();
ArrayList<NewsRecord> templist = searchInList(list, searchArticle); 
if (!templist .isEmpty()) {
        adapter = new NewsListAdapter(this, R.layout.adapter_news_list,  templist , this);
        newsListView.setAdapter(adapter);
    }

【讨论】:

    猜你喜欢
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 2021-07-26
    • 1970-01-01
    • 2011-11-11
    相关资源
    最近更新 更多