- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将自定义 ListView 添加到扩展 fragment 的类中。但它在 4 个地方给出了错误。这是代码:
TopStoriesFragment.java
public class TopStoriesFragment extends Fragment {
public String thehindu = "http://www.thehindu.com/news/?service=rss";
public String toi = "http://timesofindia.feedsportal.com/c/33039/f/533965/index.rss";
public String reuters = "http://feeds.reuters.com/reuters/topNews";
public String deccanherald = "http://www.deccanherald.com/rss-internal/top-stories.rss";
public String currenturl = thehindu;
AlertDialog levelDialog;
public String fakingnews = "http://thepuntended.wordpress.com/";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false);
feedTitle = (TextView) rootView.findViewById(R.id.feedtitle);
feedDescribtion = (TextView) rootView.findViewById(R.id.feeddescribtion);
startReadRss();
return rootView;
}
public class RssLoadingTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
displayRss();
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
preReadRss();
}
@Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
// super.onProgressUpdate(values);
}
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
readRss();
return null;
}
}
private RSSFeed myRssFeed = null;
TextView feedTitle;
TextView feedDescribtion;
// TextView feedPubdate;
// TextView feedLink;
public class MyCustomAdapter extends ArrayAdapter<RSSItem> {
public MyCustomAdapter(Context context, int textViewResourceId,
List<RSSItem> list) {
super(context, textViewResourceId, list);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
// return super.getView(position, convertView, parent);
View row = convertView;
if (row == null) {
//------------------------------- Error 1-------------------------------
LayoutInflater inflater = getLayoutInflater();
//------------------------------- Error 1-------------------------------
row = inflater.inflate(R.layout.row, parent, false);
}
TextView listTitle = (TextView) row.findViewById(R.id.listtitle);
listTitle.setText(myRssFeed.getList().get(position).getTitle());
TextView listPubdate = (TextView) row
.findViewById(R.id.listpubdate);
listPubdate.setText(myRssFeed.getList().get(position).getPubdate());
if (position % 2 == 0) {
listTitle.setBackgroundColor(0xff101010);
listPubdate.setBackgroundColor(0xff101010);
} else {
listTitle.setBackgroundColor(0xff080808);
listPubdate.setBackgroundColor(0xff080808);
}
return row;
}
}
private void startReadRss() {
new RssLoadingTask().execute();
}
private void preReadRss() {
feedTitle.setText("--- wait ---");
feedDescribtion.setText("");
// feedPubdate.setText("");
// feedLink.setText("");
//------------------------------- Error 2 (Solved)-------------------------------
setListAdapter(null);
//------------------------------- Error 2-------------------------------
Toast.makeText(getActivity(), "Reading RSS, Please wait.", Toast.LENGTH_LONG)
.show();
}
private void readRss() {
try {
URL rssUrl = new URL(currenturl);
SAXParserFactory mySAXParserFactory = SAXParserFactory
.newInstance();
SAXParser mySAXParser = mySAXParserFactory.newSAXParser();
XMLReader myXMLReader = mySAXParser.getXMLReader();
RSSHandler myRSSHandler = new RSSHandler();
myXMLReader.setContentHandler(myRSSHandler);
InputSource myInputSource = new InputSource(rssUrl.openStream());
myXMLReader.parse(myInputSource);
myRssFeed = myRSSHandler.getFeed();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void displayRss() {
if (myRssFeed != null) {
Calendar c = Calendar.getInstance();
// String strCurrentTiime = "\n(Time of Reading - "
// + c.get(Calendar.HOUR_OF_DAY)
// + " Hrs. : "
// + c.get(Calendar.MINUTE) + " Mins.)\n" +c.get(Calendar.AM_PM);
SimpleDateFormat sdf = new SimpleDateFormat(
"MMMM-dd-yyyy HH:mm:ss a");
String strCurrentTiime = sdf.format(c.getTime());
feedTitle.setText(myRssFeed.getTitle());
feedDescribtion.setText(strCurrentTiime);
// feedPubdate.setText(myRssFeed.getPubdate());
// feedLink.setText(myRssFeed.getLink());
MyCustomAdapter adapter = new MyCustomAdapter(getActivity(), R.layout.row,
myRssFeed.getList());
//------------------------------- Error 3 (Solved)-------------------------------
setListAdapter(adapter);
//------------------------------- Error 3-------------------------------
}
}
@Override
//------------------------------- Error 4 (Solved)-------------------------------
protected void onListItemClick(ListView l, View v, int position, long id) {
//------------------------------- Error 4-------------------------------
// TODO Auto-generated method stub
Intent intent = new Intent(getActivity(), ShowDetails.class);
Bundle bundle = new Bundle();
bundle.putString("keyTitle", myRssFeed.getItem(position).getTitle());
bundle.putString("keyDescription", myRssFeed.getItem(position)
.getDescription());
bundle.putString("keyLink", myRssFeed.getItem(position).getLink());
bundle.putString("keyPubdate", myRssFeed.getItem(position).getPubdate());
intent.putExtras(bundle);
startActivity(intent);
}
}
顶级 Fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/back"
android:orientation="vertical" >
<TextView
android:id="@+id/feedtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/Black"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:textStyle="bold" />
<TextView
android:textColor="@color/Black"
android:id="@+id/feeddescribtion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />
</LinearLayout>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="@drawable/divider" />
<TextView
android:id="@android:id/empty"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="No Data" />
</LinearLayout>
有错误的4处已在行间标出。错误是:
**1:Fragment 类型中的方法 getLayoutInflater(Bundle) 不适用于参数 () **
2:TopStoriesFragment 类型未定义 setListAdapter(null) 方法(通过扩展 ListFragment 而不是 Fragment 来解决。)
3:TopStoriesFragment 类型未定义 setListAdapter(TopStoriesFragment.MyCustomAdapter) 方法(通过扩展 ListFragment 而不是 Fragment 来解决。)
4:TopStoriesFragment类型的方法onListItemClick(ListView, View, int, long)必须重写或实现父类(super class)型方法(通过在方法中添加public来解决)
最佳答案
您的问题似乎可以通过扩展 ListFragment
而不是 Fragment
来解决,但您说您不能这样做。因此,让我们一次一个地解决您的问题:
1: The method getLayoutInflater(Bundle) in the type Fragment is not applicable for the arguments ()
正如 @G3rcar 所建议的,您可以声明一个 LayoutInflater
成员字段,使用传递给 onCreateView
方法的 LayoutInflater
对其进行初始化,然后使用你后面的代码中的那个。或者,您可以随时在 MyCustomAdapter.getView()
中检索 LayoutInflater
,方法是:
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
2: The method setListAdapter(null) is undefined for the type TopStoriesFragment (Solved by extending ListFragment instead of Fragment.)
从您的代码来看,您可以简单地消除此调用。或者,请参阅我对下一个问题的建议。
3: The method setListAdapter(TopStoriesFragment.MyCustomAdapter) is undefined for the type TopStoriesFragment (Solved by extending ListFragment instead of Fragment.)
解决这个问题和上一个问题的方法是在第一次构造 fragment View 时存储对 ListView
的引用:
TextView feedTitle;
TextView feedDescribtion;
ListView listView;
public View onCreateView(...) {
...
feedTitle = (TextView) rootView.findViewById(R.id.feedtitle);
feedDescribtion = (TextView) rootView.findViewById(R.id.feeddescribtion);
listView = (ListView) rootView.findViewById(android.R.id.list);
...
}
然后就可以直接为listView
设置适配器了:
private void displayRss() {
...
listView.setAdapter(adapter); // instead of "setAdapter(adapter)"
}
4: The method onListItemClick(ListView, View, int, long) of type TopStoriesFragment must override or implement a supertype method (Solved by adding public to the method)
您可以显式设置OnItemClickListener
让 ListView
响应项目点击:
listView = (ListView) rootView.findViewById(android.R.id.list);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
... // body of your current onListItemClick() method
}
});
然后,您可以从 TopStoriesFragment
中删除 onListItemClick
方法。
关于java - 将 ListView 添加到 fragment 给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24535900/
我创建了一个用户可以添加测试的字段。这一切运行顺利我只希望当用户点击(添加另一个测试)然后上一个(添加另一个测试)删除并且这个显示在新字段中。 所有运行良好的唯一问题是点击(添加另一个字段)之前添加另
String[] option = {"Adlawan", "Angeles", "Arreza", "Benenoso", "Bermas", "Brebant
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在努力将 jQuery 滚动功能添加到 nav-tab (Bootstrap 3)。我希望用户能够选择他们想要的选项卡,并在选项卡内容中有一个可以平滑滚动到 anchor 的链接。这是我的代码,可
我正在尝试在用户登录后再添加 2 个 ui 选项卡。首先,我尝试做一个之后。 $('#slideshow').tabs('remove', '4'); $("#slideshow ul li:last
我有一个包含选择元素的表单,我想通过选择添加和删除其中一些元素。这是html代码(这里也有jsfiddle http://jsfiddle.net/txhajy2w/):
正在写这个: view.backgroundColor = UIColor.white.withAlphaComponent(0.9) 等同于: view.backgroundColor = UICo
好的,如果其中有任何信息,我想将这些列添加到一起。所以说我有 账户 1 2 3 . 有 4 个帐户空间,但只有 3 个帐户。我如何创建 java 脚本来添加它。 最佳答案 Live Example H
我想知道是否有一种有效的预制算法来确定一组数字的和/差是否可以等于不同的数字。示例: 5、8、10、2,使用 + 或 - 等于 9。5 - 8 = -3 + 10 = 7 + 2 = 9 如果有一个预
我似乎有一个卡住的 git repo。它卡在所有基本的添加、提交命令上,git push 返回所有内容为最新的。 从其他帖子我已经完成了 git gc 和 git fsck/ 我认为基本的调试步骤是
我的 Oracle SQL 查询如下- Q1- select hca.account_number, hca.attribute3, SUM(rcl.extended_amou
我正在阅读 http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingG
我正在尝试添加一个“加载更多”按钮并限制下面的结果,这样投资组合页面中就不会同时加载 1000 个内容,如下所示:http://typesetdesign.com/portfolio/ 我对 PHP
我遇到这个问题,我添加了 8 个文本框,它工作正常,但是当我添加更多文本框(如 16 个文本框)时,它不会添加最后一个文本框。有人遇到过这个问题吗?提前致谢。 Live Link: JAVASCRIP
add/remove clone first row default not delete 添加/删除克隆第一行默认不删除&并获取正确的SrNo(例如:添加3行并在看到问题后删除SrNo.2)
我编码this ,但删除按钮不起作用。我在控制台中没有任何错误.. var counter = 0; var dataList = document.getElementById('materi
我有一个类似数组的对象: [1:数组[10]、2:数组[2]、3:数组[2]、4:数组[2]、5:数组[3]、6:数组[1]] 我正在尝试删除前两个元素,执行一些操作,然后将它们再次插入到同一位置。
使用的 Delphi 版本:2007 你好, 我有一个 Tecord 数组 TInfo = Record Name : String; Price : Integer; end; var Info
我使用了基本的 gridster 代码,然后我声明了通过按钮添加和删除小部件的函数它工作正常但是当我将调整大小功能添加到上面的代码中时,它都不起作用(我的意思是调整大小,添加和删除小部件) 我的js代
title 323 323 323 title 323 323 323 title 323 323 323 JS $(document).keydown(function(e){
我是一名优秀的程序员,十分优秀!