2015-06-05 2 views
-1

Я делаю приложение в студии Android, у которого есть вкладки, и одна из этих вкладок - это RSS-канал. Я пытаюсь сделать так, что, когда я нажимаю на один из элементов списка, он перенаправляет меня на веб-страницу.Открыть веб-страницу в виде списка нажмите

Tab_1.class:

public class Tab_1 extends Fragment { 
ListView mList; 
ArrayList<Info> arrayOfInfo = new ArrayList<>(); 
int i=-1; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    mList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
           long id) { 

      String url = LAdapter.getItem(position).getLink(); 
      //Intent i = new Intent(Intent.ACTION_VIEW); 
      //i.setData(Uri.parse(url)); 
      //startActivity(i); 
     } 
    }); 
} 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      View v = inflater.inflate(R.layout.tab_1, container, false); 
      mList = (ListView) v.findViewById(R.id.list); 
      new GetRssFeed().execute("http://feeds.bbci.co.uk/news/rss.xml"); 

      return v; 
     } 

     private class GetRssFeed extends AsyncTask<String, Void, Void> { 
      @Override 
      protected Void doInBackground(String... params) { 
       try { 
        RssReader rssReader = new RssReader(params[0]); 
        for (RssItem item : rssReader.getItems()) { 
         arrayOfInfo.add(i++, new Info(item.getTitle(), item.getDescription(), item.getLink())); 
        } 
       } catch (Exception e) { 
        Log.v("Error Parsing Data", e + ""); 
       } 
       return null; 
      } 


      @Override 
      protected void onPostExecute(Void aVoid) { 
       super.onPostExecute(aVoid); 
       LAdapter adapter = new LAdapter(getActivity(), arrayOfInfo); 
       adapter.notifyDataSetChanged(); 
       mList.setAdapter(adapter); 
      } 
     } 
    } 

P.S. url = LAdapter.getItem(position).getLink(); getItem отмечен как красный (Non-статический метод не может ссылаться форма статического контекста)

+0

попросили раз bazillion ... всю необходимую вам информацию, передаются 'onItemClick' ... есть не нужно использовать другие ссылки ... приведите результат 'AdapterView.getItemAtPosition' к типу элемента и используйте его – Selvin

+0

String url = AdapterView.getItemAtPosition.Link; getItemAtPosition - не может разрешить символ. –

+0

ok .... узнать java ... 'getItemAtPosition' не является статичным ... у вас должен быть экземпляр« AdapterView »... проверьте параметры' onItemClick' ... – Selvin

ответ

1

Попробуйте это:

public class Tab_1 extends Fragment { 
ListView mList; 
ArrayList<Info> arrayOfInfo = new ArrayList<>(); 
int i=-1; 
LAdapter adapter; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    mList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
           long id) { 

      String url = adapter.getItem(position).getLink(); 
      Intent i = new Intent(Intent.ACTION_VIEW); 
      i.setData(Uri.parse(url)); 
      startActivity(i); 
     } 
    }); 
} 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      View v = inflater.inflate(R.layout.tab_1, container, false); 
      mList = (ListView) v.findViewById(R.id.list); 
      new GetRssFeed().execute("http://feeds.bbci.co.uk/news/rss.xml"); 

      return v; 
     } 

     private class GetRssFeed extends AsyncTask<String, Void, Void> { 
      @Override 
      protected Void doInBackground(String... params) { 
       try { 
        RssReader rssReader = new RssReader(params[0]); 
        for (RssItem item : rssReader.getItems()) { 
         arrayOfInfo.add(i++, new Info(item.getTitle(), item.getDescription(), item.getLink())); 
        } 
       } catch (Exception e) { 
        Log.v("Error Parsing Data", e + ""); 
       } 
       return null; 
      } 


      @Override 
      protected void onPostExecute(Void aVoid) { 
       super.onPostExecute(aVoid); 
       adapter = new LAdapter(getActivity(), arrayOfInfo); 
       adapter.notifyDataSetChanged(); 
       mList.setAdapter(adapter); 
      } 
     } 
    } 
Смежные вопросы