Android 合并2个循环
我通过使用JSoup执行2个for循环来解析来自网站的2个元素、TD标记。 我希望它们在Listview中并排显示,如下所示:Android 合并2个循环,android,for-loop,android-listview,jsoup,baseadapter,Android,For Loop,Android Listview,Jsoup,Baseadapter,我通过使用JSoup执行2个for循环来解析来自网站的2个元素、TD标记。 我希望它们在Listview中并排显示,如下所示: naam: waarde naam: waarde 但是它们在Listview中是这样显示的,它由CustomBaseAdapter填充 naam: naam: naam: waarde waarde waarde 谁能帮我把这件事做完吗?这让我忙了一段时间 欢迎提出其他建议,谢谢 2个for循环,用于填充列表“naam”和“waarde”: Do
naam: waarde
naam: waarde
但是它们在Listview中是这样显示的,它由CustomBaseAdapter填充
naam:
naam:
naam:
waarde
waarde
waarde
谁能帮我把这件事做完吗?这让我忙了一段时间
欢迎提出其他建议,谢谢
2个for循环,用于填充列表“naam”和“waarde”:
Document doc = Jsoup.parse(kpn);
Elements tdsFromSecondColumn = doc.select("table.personaltable td:eq(0)");
Elements tdsFromSecondColumn1 = doc.select("table.personaltable td:eq(1)");
SearchResults sr1 = new SearchResults();
for (Element tdFromSecondColumn : tdsFromSecondColumn) {
sr1 = new SearchResults();
sr1.setNaam(tdFromSecondColumn.text());
results.add(sr1);
}
for (Element tdFromSecondColumn1 : tdsFromSecondColumn1) {
sr1 = new SearchResults();
sr1.setWaarde(tdFromSecondColumn1.text());
results.add(sr1);
}
我知道应该是这样的,但是怎么会呢
for (Element tdFromSecondColumn : tdsFromSecondColumn) {
sr1 = new SearchResults();
sr1.setNaam(tdFromSecondColumn.text());
sr1.setWaarde(tdFromSecondColumn1.text());
results.add(sr1);
}
这是我的CustomeBaseAdapter:
public class MyCustomBaseAdapter extends BaseAdapter {
private static ArrayList<SearchResults> searchArrayList;
private LayoutInflater mInflater;
public MyCustomBaseAdapter(Context context, ArrayList<SearchResults> results) {
searchArrayList = results;
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return searchArrayList.size();
}
public Object getItem(int position) {
return searchArrayList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.test, null);
holder = new ViewHolder();
holder.txtNaam = (TextView) convertView.findViewById(R.id.naam);
holder.txtWaarde = (TextView) convertView.findViewById(R.id.waarde);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txtNaam.setText(searchArrayList.get(position).getNaam());
holder.txtWaarde.setText(searchArrayList.get(position).getWaarde());
return convertView;
}
static class ViewHolder {
TextView txtNaam;
TextView txtWaarde;
}
}
公共类MyCustomBaseAdapter扩展BaseAdapter{
私有静态ArrayList searchArrayList;
私人停车场;
公共MyCustomBaseAdapter(上下文,ArrayList结果){
searchArrayList=结果;
mInflater=LayoutInflater.from(上下文);
}
public int getCount(){
返回searchArrayList.size();
}
公共对象getItem(int位置){
返回searchArrayList.get(位置);
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父级){
视窗座;
如果(convertView==null){
convertView=mInflater.充气(R.layout.test,空);
holder=新的ViewHolder();
holder.txtNaam=(TextView)convertView.findViewById(R.id.naam);
holder.txtwaard=(TextView)convertView.findViewById(R.id.waarde);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
holder.txtNaam.setText(searchArrayList.get(position.getNaam());
holder.txtwaard.setText(searchArrayList.get(position.getWaarde());
返回视图;
}
静态类视图持有者{
TextView-txtNaam;
TextView-txtwaard;
}
}
编辑:
我现在有一些类似的内容,但获取异常索引大小12:
public ArrayList<SearchResults> GetSearchResults(){
ArrayList<SearchResults> results = new ArrayList<SearchResults>();
ArrayList<SearchResults> results1 = new ArrayList<SearchResults>();
ArrayList<SearchResults> results2 = new ArrayList<SearchResults>();
Document doc = Jsoup.parse(kpn);
Elements tdsFromSecondColumn = doc.select("table.personaltable td:eq(0)");
Elements tdsFromSecondColumn1 = doc.select("table.personaltable td:eq(1)");
SearchResults sr1 = new SearchResults();
SearchResults sr2 = new SearchResults();
for (Element tdFromSecondColumn : tdsFromSecondColumn) {
sr1 = new SearchResults();
sr1.setNaam(tdFromSecondColumn.text());
results.add(sr1);
}
for (Element tdFromSecondColumn1 : tdsFromSecondColumn1) {
sr2 = new SearchResults();
sr2.setWaarde(tdFromSecondColumn1.text());
results1.add(sr2);
}
for (int i = 0; i < results.size();i++) {
results.add(results.get(i));
results2.add(results1.get(i));
}
return results2;
}
}
public ArrayList GetSearchResults(){
ArrayList结果=新建ArrayList();
ArrayList results1=新的ArrayList();
ArrayList results2=新的ArrayList();
Document doc=Jsoup.parse(kpn);
元素tdsFromSecondColumn=doc.select(“table.personaltable td:eq(0)”;
元素tdsFromSecondColumn1=doc.select(“table.personaltable td:eq(1)”;
SearchResults sr1=新的SearchResults();
SearchResults sr2=新的SearchResults();
对于(元素tdFromSecondColumn:tdsFromSecondColumn){
sr1=新的搜索结果();
sr1.setNaam(tdFromSecondColumn.text());
结果:添加(sr1);
}
对于(元素tdFromSecondColumn1:tdsFromSecondColumn1){
sr2=新的搜索结果();
sr2.setWaarde(tdFromSecondColumn1.text());
结果1.添加(sr2);
}
对于(inti=0;i
编辑2:
异常已消失,但它仅显示i.a setWaarde的结果:
public ArrayList<SearchResults> GetSearchResults(){
ArrayList<SearchResults> results = new ArrayList<SearchResults>();
ArrayList<SearchResults> results1 = new ArrayList<SearchResults>();
ArrayList<SearchResults> results2 = new ArrayList<SearchResults>();
Document doc = Jsoup.parse(kpn);
Elements tdsFromSecondColumn = doc.select("table.personaltable td:eq(0)");
Elements tdsFromSecondColumn1 = doc.select("table.personaltable td:eq(1)");
SearchResults sr1 = new SearchResults();
SearchResults sr2 = new SearchResults();
for (Element tdFromSecondColumn : tdsFromSecondColumn) {
sr1 = new SearchResults();
sr1.setNaam(tdFromSecondColumn.text());
results.add(sr1);
}
for (Element tdFromSecondColumn1 : tdsFromSecondColumn1) {
sr1 = new SearchResults();
sr1.setWaarde(tdFromSecondColumn1.text());
results1.add(sr1);
}
for (int i = 0; i < results.size() && i < results1.size();i++) {
results.add(results.get(i));
results2.add(results1.get(i));
}
return results2;
}
}
public ArrayList GetSearchResults(){
ArrayList结果=新建ArrayList();
ArrayList results1=新的ArrayList();
ArrayList results2=新的ArrayList();
Document doc=Jsoup.parse(kpn);
元素tdsFromSecondColumn=doc.select(“table.personaltable td:eq(0)”;
元素tdsFromSecondColumn1=doc.select(“table.personaltable td:eq(1)”;
SearchResults sr1=新的SearchResults();
SearchResults sr2=新的SearchResults();
对于(元素tdFromSecondColumn:tdsFromSecondColumn){
sr1=新的搜索结果();
sr1.setNaam(tdFromSecondColumn.text());
结果:添加(sr1);
}
对于(元素tdFromSecondColumn1:tdsFromSecondColumn1){
sr1=新的搜索结果();
sr1.setWaarde(tdFromSecondColumn1.text());
结果1.添加(sr1);
}
对于(int i=0;i
问题在于,每次通过每个循环时,您都在创建一个新的搜索结果
对象。在第一个循环的每次迭代中创建一个SearchResults
对象是可以的,但是您需要在第二个循环中使用在第一个循环中创建的SearchResults
对象,不要创建新对象。+1正如Chris所说。此外,如果您试图组合这两个循环,则无法使用该语法。只需使用简单的计数方法即可
for(Object o : oList1) {
doStuff(o);
}
for (Object o : oList2) {
doStuff2(o);
}
变成
for (int i = 0; i < oList1.size() && i < oList2.size(); i++) {
doStuff(oList1.get(i));
doStuff2(oList2.get(i));
}
for(int i=0;i
当然,这假设两个列表的长度相同,否则其中一个列表将无法完全使用。如果它们不同,您可以在循环中使用OR而不是AND,并在对每个循环执行操作之前检查它们是否为null,但您最好只使用两个单独的循环 成功了!,在听取了KCopock的建议,退一步,喝了一杯啤酒和一杯sigaret后,我认为解决方案更容易:
public ArrayList<SearchResults> GetSearchResults(){
ArrayList<SearchResults> results = new ArrayList<SearchResults>();
Document doc = Jsoup.parse(kp);
// Get all td's
Elements waardes= doc.select("td");
// Iterator over those elements
ListIterator<Element> postIt = waardes.listIterator();
SearchResults sr1 = new SearchResults();
while (postIt.hasNext()) {
sr1 = new SearchResults();
// Add the value text to the ArrayList
sr1.setNaam(postIt.next().text());
sr1.setWaarde(postIt.next().text());
results.add(sr1);
}
return results;
}
}
public ArrayList GetSearchResults(){
ArrayList结果=新建ArrayList();
Document doc=Jsoup.parse(kp);
//获取所有td的
元素waardes=文件选择(“td”);
//对这些元素的迭代器
ListIterator posit=waardes.ListIterator();
SearchResults sr1=新的SearchResults();
while(posit.hasNext()){
sr1=新的搜索结果();
//将值文本添加到数组中