C
CMZoller
Neues Mitglied
- 2
Hallo,
ich bin ziemlich neu in der Android-Entwicklung und habe mich bereits etwas eingearbeitet.
Soweit klappt alles, doch jetzt stolper ich über ein Problem:
Undzwar wird in Zeile eine NullPointerException und ich kann mir nicht erklären wieso.
Alles klappt, bis ich ein Item aus der Liste auswähle und die Daten an die Activity übergeben will.
Es handelt es sich um folgende Zeile:
Die App habe ich als Anhang hinzugefügt.
ich bin ziemlich neu in der Android-Entwicklung und habe mich bereits etwas eingearbeitet.
Soweit klappt alles, doch jetzt stolper ich über ein Problem:
Undzwar wird in Zeile eine NullPointerException und ich kann mir nicht erklären wieso.
Alles klappt, bis ich ein Item aus der Liste auswähle und die Daten an die Activity übergeben will.
Code:
package com.android.npack;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.net.http.AndroidHttpClient;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import com.android.npack.HttpAccess;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.ListActivity;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class npackActivity extends ListActivity{
private ArrayList<HashMap<String, String>> myListContent =
new ArrayList<HashMap<String, String>>();
private SimpleAdapter adapter;
private ListView lv;
private int i;
static String[] newsId;
static ArrayList<String> newsData = new ArrayList<String>();
static ArrayList<String> newsData2 = new ArrayList<String>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Working
//String newsIds = HttpAccess.loadData("http://api.example.com/?ns=nid");
// if(newsIds == "noconnection") {
// TextView nocContent = (TextView) findViewById(R.id.pleasewait);
// nocContent.setText("Verbindungsabbruch");
//} else {
//newsId = newsIds.split(" ");
LoadHeadlinesTask task = new LoadHeadlinesTask();
task.execute();
// }
adapter = new SimpleAdapter(
this,
myListContent,
R.layout.two_line_list_item,
new String[] {"Headline", "Subheadline"},
new int[] {R.id.text1, R.id.text2});
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.home_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_impressum:
final Intent info_intent = new Intent(this, ImpressumActivity.class);
startActivity(info_intent);
break;
case R.id.menu_feedback:
final Intent fb_intent = new Intent(this, FeedbackActivity.class);
startActivity(fb_intent);
break;
default:
}
return super.onOptionsItemSelected(item);
}
private class LoadHeadlinesTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... newsId) {
String newsIds = HttpAccess.loadData("http://api.example.com/?ns=nid");
if(newsIds == "noconnection") {
TextView nocContent = (TextView) findViewById(R.id.pleasewait);
nocContent.setText("Verbindungsabbruch");
} else {
newsId = newsIds.split(" ");
//Load headlines an return them as array
for(i = 0; i <= 9; i++){
String newsInfos = HttpAccess.loadData("http://api.example.com/?ns=news&id="+newsId[i]);
JSONArray jsonArray;
try {
jsonArray = new JSONArray(newsInfos);
JSONObject jsonObject = jsonArray.getJSONObject(0);
String newsName = jsonObject.getString("name");
String newsSub = jsonObject.getString("untertitel");
newsData.add(i,newsName);
newsData2.add(i,newsSub);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//return headlines
}//End else
return "...";
}
@Override
protected void onPostExecute(String result) {
//Remove Please wait text
View row = findViewById(R.id.pleasewait);
row.startAnimation(AnimationUtils.loadAnimation(npackActivity.this, android.R.anim.fade_out));
row.setVisibility(View.INVISIBLE);
View row2 = findViewById(R.id.pleasewait2);
row2.startAnimation(AnimationUtils.loadAnimation(npackActivity.this, android.R.anim.fade_out));
row2.setVisibility(View.INVISIBLE);
//Set Data
/** Fill list with data*/
for(i = 0; i <= 9; i++){
HashMap<String, String> item = new HashMap<String, String>();
String newsName = newsData.get(i);
String newsSub = newsData2.get(i);
item.put("Headline", newsName);
item.put("Subheadline", newsSub);
myListContent.add(item);
adapter.notifyDataSetChanged();
}
//Update
adapter.notifyDataSetChanged();
//Load intents after tapping on links
setListAdapter(adapter);
ListView lv = getListView();
lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
HashMap<String, String> item;
item = myListContent.get(position);
Bundle b = new Bundle();
String newId = newsId[position];
b.putString("nid", newId);
Intent newsActivity = new Intent(npackActivity.this, ReadNewsActivity.class);
newsActivity.putExtras(b);
npackActivity.this.startActivity(newsActivity);
myListContent.set(position, item);
adapter.notifyDataSetChanged();
}
});
//Text2
}
}
}
Es handelt es sich um folgende Zeile:
Code:
String newId = newsId[position];
Die App habe ich als Anhang hinzugefügt.
Anhänge
Zuletzt bearbeitet: