gpt4 book ai didi

android - 相对布局中的多个 ListView ?

转载 作者:行者123 更新时间:2023-11-30 03:42:19 26 4
gpt4 key购买 nike

我在为我的提要使用 ListView 时遇到了问题。我在同一个 Activity 中将两个源放在彼此之上,一个流式传输新闻,现在我将事件添加到底部,但它无法识别第二个 ListView 的 android id???

<ListView
android:id="@android:id/list"
android:background="@color/red"
android:layout_toRightOf="@+id/map"
android:layout_width="260dp"
android:layout_marginTop="5dp"
android:layout_marginLeft="10dp"
android:layout_height="413dp" />

第一个 ListView 完美运行。

<ListView  
android:id="@+id/android:list1"
android:background="@color/blue"
android:layout_toRightOf="@+id/button3"
android:layout_width="260dp"
android:layout_marginTop="430dp"
android:layout_marginLeft="6dp"
android:layout_height="390dp" />

这个 ListView 不起作用??我知道关于 android id 的信息吗?我试过几种变体?

android:id="@+id/android:list1"
android:id="@android:id/list1"
android:id="@+id/list1"

需要任何帮助吗?我花了几个小时浏览代码,现在我知道它的 id 就是问题所在,因为如果我交换 listview Activity ,那么第二个 listview 可以工作吗??

private class MyTask extends AsyncTask<Void, Void, Void>{

@Override
protected Void doInBackground(Void... arg0) {
try {
URL rssUrl = new URL("http:/news.rss");
///URL rssUrl1 = new URL("http://events.rss");

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);
///InputSource myInputSource1 = new InputSource(rssUrl1.openStream());
///myXMLReader.parse(myInputSource1);

myRssFeed = myRSSHandler.getFeed();
///myRssFeed1 = myRSSHandler.getFeed();

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return null;
}

@Override
protected void onPostExecute(Void result) {
if (myRssFeed!=null || myRssFeed1!=null)
{
TextView feedupdate = (TextView)findViewById(R.id.feedupdate);
feedupdate.setText(myRssFeed.getupdate());
//TextView feedupdate1 = (TextView)findViewById(R.id.feedupdate1);
///feedupdate1.setText(myRssFeed1.getupdate());

ArrayAdapter<RSSItem> adapter =
new ArrayAdapter<RSSItem>(getApplicationContext(),
android.R.layout.simple_list_item_1,myRssFeed.getList());
setListAdapter(adapter);
///ArrayAdapter<RSSItem> adapter1 =
//new ArrayAdapter<RSSItem>(getApplicationContext(),
//android.R.layout.simple_list_item_1,myRssFeed1.getList());
//setListAdapter(adapter1);

}else{

TextView textEmpty = (TextView)findViewById(android.R.id.empty);
textEmpty.setText("No Feed Found");
}

super.onPostExecute(result);
}

}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {

Uri feedUri = Uri.parse(myRssFeed.getItem(position).getLink());
Uri feedUri1 = Uri.parse(myRssFeed1.getItem(position).getLink());
Intent myIntent = new Intent(Intent.ACTION_VIEW, feedUri);
Intent myIntent1 = new Intent(Intent.ACTION_VIEW, feedUri1);
startActivity(myIntent);
startActivity(myIntent1);
}
}

public class HomeActivity extends ListActivity {
static final LatLng TULLAMORE = new LatLng(53.28000, -7.49000);
static final LatLng MRA = new LatLng(53.274823, -7.492655);
private GoogleMap map;
private RSSFeed myRssFeed = null;
private RSSFeed myRssFeed1 = null;
@Override


protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title);
new MyTask().execute();


map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();
Marker tullamore = map.addMarker(new MarkerOptions().position(TULLAMORE)
.title("Tullamore"));
Marker mra = map.addMarker(new MarkerOptions()
.position(MRA)
.title("-")
.snippet("Hey :-)")
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_launcher)));

map.moveCamera(CameraUpdateFactory.newLatLngZoom(TULLAMORE, 70));
// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
map.setMyLocationEnabled(true);
map.getUiSettings().setZoomControlsEnabled(true);
map.getUiSettings().setMyLocationButtonEnabled(true);
map.setTrafficEnabled(true);
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
Button button3 = (Button) findViewById(R.id.button3);
Button button4 = (Button) findViewById(R.id.button4);

button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//Starting a new Intent
Intent FavouritesScreen = new Intent(getApplicationContext(),FavouritesActivity.class);
startActivity(FavouritesScreen);
}
});

button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//Starting a new Intent
Intent NearbyScreen = new Intent(getApplicationContext(), NearbyActivity.class);
startActivity(NearbyScreen);
}
});

button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//Starting a new Intent
Intent TourismScreen = new Intent(getApplicationContext(), TourismActivity.class);
startActivity(TourismScreen);
}
});

button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//Starting a new Intent
Intent MapScreen = new Intent(getApplicationContext(), MapActivity.class);
startActivity(MapScreen);
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.home, menu);
return true;

}
private class MyTask extends AsyncTask<Void, Void, Void>{

@Override
protected Void doInBackground(Void... arg0) {
try {
URL rssUrl = new URL("http://www.midlandsireland.ie/news.rss");
URL rssUrl1 = new URL("http://feedity.com/midlandsireland-ie/V1pUU1VR.rss");

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);
InputSource myInputSource1 = new InputSource(rssUrl1.openStream());
myXMLReader.parse(myInputSource1);

myRssFeed = myRSSHandler.getFeed();
myRssFeed1 = myRSSHandler.getFeed();

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return null;
}

@Override
protected void onPostExecute(Void result) {
if (myRssFeed!=null || myRssFeed1!=null)
{
TextView feedupdate = (TextView)findViewById(R.id.feedupdate);
feedupdate.setText(myRssFeed.getupdate());
TextView feedupdate1 = (TextView)findViewById(R.id.feedupdate1);
feedupdate1.setText(myRssFeed1.getupdate());
ListView newsfeed = (ListView)findViewById(android.R.id.list);
ListView eventsfeed = (ListView)findViewById(R.id.list1);

ArrayAdapter<RSSItem> adapter =
new ArrayAdapter<RSSItem>(getApplicationContext(),
android.R.layout.simple_list_item_1,myRssFeed.getList());
setListAdapter(adapter);

}else{

TextView textEmpty = (TextView)findViewById(android.R.id.empty);
textEmpty.setText("No Feed Found");
}

super.onPostExecute(result);
}

}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Uri feedUri = Uri.parse(myRssFeed.getItem(position).getLink());
Intent myIntent = new Intent(Intent.ACTION_VIEW, feedUri);
startActivity(myIntent);
}
}

最佳答案

这个ID:

android:id="@+id/android:list1"
android:id="@android:id/list1"

SDK 中不存在。 id android:id="@+id/list1" 是有效的,如果你在 Activity 中使用 findViewById(R.id.list1) >(其内容是两个 ListViews 的布局)您会找到 ListView

此外,正如您的代码所暗示的那样,您似乎正试图将两个 ListViews 作为一个来操作,这显然是错误的。在 onPostExecute() 方法中,您将使用 setListAdapter() 方法为 ID 为 android 的 ListView 设置适配器.R.id.list 和其他 ListView 你会做:

ListView second = (ListView) findViewById(R.id.list1);
// set the adapter for this ListView

关于这段代码:

        Uri feedUri = Uri.parse(myRssFeed.getItem(position).getLink());
Uri feedUri1 = Uri.parse(myRssFeed1.getItem(position).getLink());
Intent myIntent = new Intent(Intent.ACTION_VIEW, feedUri);
Intent myIntent1 = new Intent(Intent.ACTION_VIEW, feedUri1);
startActivity(myIntent);
startActivity(myIntent1);

开始两个(?!?!) Activity (做什么?!)你想做什么?

编辑:

try {
URL rssUrl = new URL("http:/news.rss");
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();

RSSHandler myRSSHandler1 = new RSSHandler();
myXMLReader.setContentHandler(myRSSHandler1);

URL rssUrl1 = new URL("http://events.rss");
InputSource myInputSource1 = new InputSource(rssUrl1.openStream());
myXMLReader.parse(myInputSource1);
myRssFeed1 = myRSSHandler1.getFeed();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

@Override
protected void onPostExecute(Void result) {
if (myRssFeed!=null && myRssFeed1!=null) {
ArrayAdapter<RSSItem> adapter =
new ArrayAdapter<RSSItem>(getApplicationContext(), android.R.layout.simple_list_item_1, myRssFeed.getList());
setListAdapter(adapter);
ArrayAdapter<RSSItem> adapter1 =
new ArrayAdapter<RSSItem>(getApplicationContext(), android.R.layout.simple_list_item_1,myRssFeed1.getList());
ListView lv = (ListView) findViewById(R.id.list1);
lv.setAdapter(adapter1);
} else {
setListAdapter(new ArrayAdapter<RSSItem>(getApplicationContext(), android.R.layout.simple_list_item_1, new ArrayList<RSSItem>()););
ArrayAdapter<RSSItem> adapterEmpty1 =
new ArrayAdapter<RSSItem>(getApplicationContext(), android.R.layout.simple_list_item_1, new ArrayList<RSSItem>());
ListView lv = (ListView) findViewById(R.id.list1);
lv.setAdapter(adapterEmpty1);
}

}

关于android - 相对布局中的多个 ListView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15531417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com