Android - 在排球响应生成时运行一段代码
在我的android应用程序中,我使用抽球获取一些信息,然后动态创建布局。问题是我想添加一个按钮点击侦听器到动态创建的布局视图之一,但我必须等到凌空响应。这是一个按钮点击侦听器,所以我不能把OnClickListener放在响应块中,所以这里是一个问题:如何理解何时生成响应并将OnClickListener放入其中?Android - 在排球响应生成时运行一段代码
试试这个,当你从凌空得到的数据:
button.performClick();
button.setPressed(true);
也可以在btn.setOnclicklistener上执行您想要的操作 –
您可以使用广播接收器得到通知时,你的数据被取出(或解析)。
你可以这样做。
编写一条广播消息来告诉数据被提取。
你可以做这样的事情在凌空你onResponse方法
public void onResponse(JSONObject response) {
try {
// Parsing
someMethod(); /// this is the method to notify idf data is fetched
} catch (JSONException e) {
e.printStackTrace();
}
}
的someMethod()
public void someMethod(){
Intent i = new Intent();
i.setAction("Some key");
sendBroadcast(i);
}
登记接收您的活动
BroadcastReceiver receiver = new YourReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("Some key");
registerReceiver(receiver, filter);
最后一步:设置里面的onReceive您buttonListener()的方法 接收机
private class YourReceiver extends BroadcastReceiver{
private Context context;
@Override
public void onReceive(Context context,Intent intent)
{
if(intent.getAction().equalsIgnoreCase("Some key"))
{
//Set your button listener here
}
}
}
注:致电您注册接收器后您接收器(可避免这种常见的错误)。
这是starting point to learn Broadcast Receiver,如果你不知道他们。
`
过帐方法来发布凌空请求。在onResponse您可以根据需要你这样的反应进行你的操作:
private void fetchData() {
StringRequest stringRequest = new StringRequest(mURL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if(expectedResponse){
Button mBtn=new Button(getApplicationContext());
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Conduct your operation here
}
});
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(VolleyExampleActivity.this, error.getMessage(), Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
希望这有助于。
在响应块,你也可以写
Button dynamicButton = new Button(getActivity());
dynamicButton.setId(0X000000);
dynamicButton.setOnClickListener((View.OnClickListener)getActivity());
在点击监听器可以处理这样
@Override
public void onClick(View v) {
switch (v.getId()){
case 0X000000:
Toast.makeText(getActivity(),"To something",Toast.LENGTH_LONG).show();
break;
}
}
我希望这帮助
嗯,你为什么认为你可以”在响应块中设置点击监听器?没有理由你不能。 –
你想知道什么时候获取信息吗? –
@RohitSingh是的,正好。并运行一个像OnClickListener这样的代码,在完全加载java文件后需要满足,所以我不能使用布尔值或类似的东西。 – NiethanX