0

理論的には、RSSフィードの1つのサイトからsearchListViewというListViewにRSS見出しを表示するクラスがあります。 ListViewが空の場合、ListViewが空であることをユーザーに知らせるTextViewが表示されます。これは、このアクティビティに移動するたびに発生します。ボタンとEditTextは見出しをフィルタリングするためのものです。ArrayViewを使用してListViewに新しいアクティビティが表示されない

私は別のプロジェクトでこのクラスと全く同じクラスを持っています(このクラスはこのプロジェクトの主なアクティビティです)。

RssItemは、RSSフィード情報を見出しのタイトルと見出しのURLに解析するクラスです。

注:SearchActivityはではなく、主なアクティビティです。

編集:メインアクティビティでコールバックとLoaderManagerを使用して、アイテムをリストビューに表示しています。私はこれらについてあまり知識がありません、そして、彼らは主な活動のために問題を引き起こしているかどうか本当にわかりません。しかし、私は主要な活動からの情報を一切伝えません。

固定:何らかの理由で何もエラーが表示されず、何も表示されませんでした。それからアンドロイドのマニフェストに入って、アプリにインターネットに接続する権限がないことに気付きました。愚かな間違い、見逃しやすい。

<uses-permission android:name="android.permission.INTERNET"/> 

SearchActivity.java

public class SearchActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<List<RssItem>> { 
    private EditText mEditText; 

    private Button mButton; 

    private ArrayAdapter<RssItem> mAdapter; 
    private ListView mListView ; 
    // hard wire Rss feed source for the time being 
    private String mDataSource = "http://feeds.bbci.co.uk/news/uk/rss.xml"; 
    // no search string at the moment 
    private String mSearchString = ""; 

    private static final int LOADER_ID = 1; 
    // The callbacks through which we will interact with the LoaderManager. 
    private LoaderManager.LoaderCallbacks<List<RssItem>> mCallbacks; 
    private LoaderManager mLoaderManager; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_search); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     mButton = (Button) findViewById(R.id.button); 
     mEditText = (EditText)findViewById(R.id.editTextSearch); 
     mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1); 
     mListView = (ListView)findViewById(R.id.searchListView); 
     mListView.setAdapter(mAdapter); 
     TextView emptyText = (TextView)findViewById(R.id.textViewEmpty); 
     mListView.setEmptyView(emptyText); 
     // Set list view item click listener 
     mListView.setOnItemClickListener(new ListListener(this)); 

     // The Activity (which implements the LoaderCallbacks<Cursor> 
     // interface) is the callbacks object through which we will interact 
     // with the LoaderManager. The LoaderManager uses this object to 
     // instantiate the Loader and to notify the client when data is made 
     // available/unavailable. 
     mCallbacks = this; 

     // Initialize the Loader with id '1' and callbacks 'mCallbacks'. 
     // If the loader doesn't already exist, one is created. Otherwise, 
     // the already created Loader is reused. In either case, the 
     // LoaderManager will manage the Loader across the Activity/Fragment 
     // lifecycle, will receive any new loads once they have completed, 
     // and will report this new data back to the 'mCallbacks' object. 
     mLoaderManager = getLoaderManager(); 
     mLoaderManager.initLoader(LOADER_ID, null, mCallbacks); 
    } 

    // handler for search button click 
    public void onClick(View v){ 
     mSearchString = mEditText.getText().toString(); 
     mLoaderManager.restartLoader(LOADER_ID, null, mCallbacks); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public Loader<List<RssItem>> onCreateLoader(int id, Bundle args) { 
     RssLoader loader = new RssLoader(
       this, // context 
       mDataSource, // URL of Rss feed 
       mSearchString // search loaded RssItem for match in title 
     ); 
     return loader; 
    } 

    @Override 
    public void onLoadFinished(Loader<List<RssItem>> loader, List<RssItem> data) { 
     mAdapter.clear(); 
     mAdapter.addAll(data); 
    } 

    @Override 
    public void onLoaderReset(Loader<List<RssItem>> loader) { 
     mAdapter.clear(); 
    } 
} 

ListListener.java

public class ListListener implements OnItemClickListener { 
    // And a reference to a calling activity 
    // Calling activity reference 
    Activity mParent; 
    /** We will set those references in our constructor.*/ 
    public ListListener(Activity parent) { 
     mParent = parent; 
    } 

    /** Start a browser with url from the rss item.*/ 
    public void onItemClick(AdapterView<?> parent, View view, int pos, long id) { 
     // We create an Intent which is going to display data 
     Intent i = new Intent(Intent.ACTION_VIEW); 
     // We have to set data for our new Intent; 
     i.setData(Uri.parse(((RssItem)(parent.getItemAtPosition(pos))).getLink())); 
     // And start activity with our Intent 
     mParent.startActivity(i); 
    } 
} 
+0

FIXED:何らかのエラーや何も表示されませんでしたが、何らかの理由で何も表示されませんでした。それからアンドロイドのマニフェストに入って、アプリにインターネットに接続する権限がないことに気付きました。愚かな間違い、見逃しやすい。 – Lemoncide

+0

答えを追加し、この質問を閉じるには受け入れ済みとしてマークします。 – Keshav

+0

@Lemoncideあなたが解決したことを知ってうれしいです。これを答えとして追加し、それが受け入れられないように見えるように受け入れます。 –

答えて

1

私はすべてのエラーか何かを取得しなかったが、何らかの理由で、何も得るんでしょう表示されます。それからアンドロイドのマニフェストに入って、アプリにインターネットに接続する権限がないことに気付きました。愚かな間違い、見逃しやすい。

<uses-permission android:name="android.permission.INTERNET"/>が見つかりませんでした。

関連する問題