Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从ListView将JSON值解析为活动。初学者_Java_Android_Json_Listview - Fatal编程技术网

Java 从ListView将JSON值解析为活动。初学者

Java 从ListView将JSON值解析为活动。初学者,java,android,json,listview,Java,Android,Json,Listview,我刚刚学习了java和android应用程序开发 我已经能够将json对象从webservice填充到NewActivity.class的listview。但是,通过解析从myjsonparser类到myDetailActivity.class的值,为mylistview设置OnItemClickListener存在问题 我试着从这里读一些答案,但在某一点上迷路了。如果有人提出意见,我将非常高兴。谢谢 JSON解析器类 public class JSONParser { public stat

我刚刚学习了java和android应用程序开发

我已经能够将
json
对象从
webservice
填充到
NewActivity.class
listview
。但是,通过解析从my
jsonparser
类到my
DetailActivity.class的值,为my
listview
设置
OnItemClickListener
存在问题

我试着从这里读一些答案,但在某一点上迷路了。如果有人提出意见,我将非常高兴。谢谢

JSON解析器类

public class JSONParser {

public static List<Events> parseFeed(String content) {

    try {
        JSONArray ar = new JSONArray(content);
        List<Events> eventList = new ArrayList<>();

        for (int i = 0; i < ar.length(); i++) {

            JSONObject obj = ar.getJSONObject(i);
            String headline = obj.optString("Content");

            Events events = new Events();

            events.setId(obj.getInt("id"));
            events.setTitle(obj.getString("Title"));
            events.setPostDate(obj.getString("PostDate"));
            events.setSummary(obj.getString("Summary"));
            events.setContent(obj.getString("Content"));
            events.setPicture(obj.getString("Picture"));
            eventList.add(events);
        }

        return eventList;
    } catch (JSONException e) {
        e.printStackTrace();
        return null;
    }

}
最后是我的DetailActivity.class,它有三个TextView来接收JSON值

public class EventsDetail extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_events_detail);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    TextView detailname = (TextView) findViewById(R.id.detailTitle);
    TextView eventDetail = (TextView) findViewById(R.id.detailContent);
    TextView eventDate = (TextView) findViewById(R.id.detailDate);

 }
你可以试试这个:)

要使上述代码正常工作,必须实现可序列化到事件类的实现:)

这很简单:)只需要为Events类的所有属性指定implementserializable和write setter和getter:)仅此而已:)

以下是有关如何实现序列化的链接:)

希望我的回答能帮助你:)快乐的编码伙伴:)

你需要这样做:

1.使类
可序列化

public class Events implements Serializable{

 // Other stuff

}
2.
单击
列表视图的

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Intent intent = new Intent(NewActivity.this, EventsDetail.class);
    intent.putExtra("object",eventList[position]);
    startActivity(intent);
}

希望这能对您有所帮助。

您必须将所选事件作为参数传递,以调用事件详细信息活动,所有这些都是您创建的:)@Phrytz,您尝试过我的解决方案吗?是的,但可能我做得不对。我认为您必须了解NewActivity.class是如何构造的。我已经编辑了我的新活动。请看一看@SandeepBhandari@phrytz:buddy您可以发布您的新活动代码吗:)我将帮助您将数组声明为实例变量,然后在单击列表项:DI have中访问它。检查它@sandeppebhandarii实现serialisable,并且已经有setter和getter,但是没有工作。你是说“intent.put”还是“intent.putExtra”,因为“intent.put”给了我一个错误。以及“事件列表[位置]”中的位置。无论如何,感谢您的efforthey Phrytz:)在NewActivity.class中有一个名为的方法,您在其中声明一个适配器,并将数组事件列表作为参数传递给该适配器:)您所要做的就是为NewActivity声明一个实例属性,并将该数组保存在该属性中:),以便可以从所有方法访问该数组在类中:)不要将其作为局部变量:)是的,你是对的,它是putExtra:)抱歉:)我发布它时Din有android studio:)所以犯了一个错误:)我更新了我的答案:)如果你仍然有问题,请在这里留言,伙计:)
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Intent intent = new Intent(NewActivity.this, EventsDetail.class);

    //try type casting Events instance as Serializable :)
    Events selectedEvent = eventList[position];
    intent.putExtra("selectedEvent",(Serializable)selectedEvent);
    startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_events_detail);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    Events passedEvent = getIntent().getSerializableExtra("selectedEvent");

    TextView detailname = (TextView) findViewById(R.id.detailTitle);
    TextView eventDetail = (TextView) findViewById(R.id.detailContent);
    TextView eventDate = (TextView) findViewById(R.id.detailDate);

    //set the textview values now from the recieved events instance :)
}
public class Events implements Serializable{

 // Other stuff

}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Intent intent = new Intent(NewActivity.this, EventsDetail.class);
    intent.putExtra("object",eventList[position]);
    startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_events_detail);

   // Other stuff

    Events event = (Events) getIntent().getSerializableExtra("object");

}