Я нуждаюсь в том, чтобы проконтролировать пульсацию на персонализированном Listview для того, чтобы он реализовал операцию завися тот, который нажимается. Уже у меня есть OnItemClickListener.
Но, поскольку я могу перемещать данные, содержавшие в Статье к другой Activity
Я оставляю им главный код
public class Noticias extends AppCompatActivity {
ArrayList<Product> arrayList;
ListView lv;
ProgressDialog pdialog = null;
Context context = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_noticias);
android:setTitle("Noticias");
arrayList = new ArrayList<>();
lv = (ListView) findViewById(R.id.listView);
context = this;
runOnUiThread(new Runnable() {
@Override
public void run() {
pdialog = ProgressDialog.show(context, "", "Buscando Noticias...", true);
new ReadJSON().execute("http://xxxxxxx/xxxxx/xxxxxx.php");
}
});
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Toast.makeText(getApplicationContext(), "Click en la posición " + position, Toast.LENGTH_SHORT).show();
}
});
}
class ReadJSON extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
return readURL(params[0]);
}
@Override
protected void onPostExecute(String content) {
pdialog.dismiss();
try {
JSONArray jsonarray = new JSONArray(content);
for(int i =0;i<jsonarray.length(); i++){
JSONObject productObject = jsonarray.getJSONObject(i);
arrayList.add(new Product(
productObject.getString("nombre"),
productObject.getString("contenido"),
productObject.getString("extra1")
));
}
} catch (JSONException e) {
e.printStackTrace();
}
CustomListAdapter adapter = new CustomListAdapter(
getApplicationContext(), R.layout.custom_list_layout, arrayList
);
lv.setAdapter(adapter);
}
}
private static String readURL(String theUrl) {
StringBuilder content = new StringBuilder();
try {
// create a url object
URL url = new URL(theUrl);
// create a urlconnection object
URLConnection urlConnection = url.openConnection();
// wrap the urlconnection in a bufferedreader
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String line;
// read from the urlconnection via the bufferedreader
while ((line = bufferedReader.readLine()) != null) {
content.append(line + "\n");
}
bufferedReader.close();
} catch (Exception e) {
e.printStackTrace();
}
return content.toString();
}
}
Я провожу несколько дней ища и единственная встреча информация с Arrays, созданными локально
Это код новой активности, где я получаю данные о Статье
public class Noticia extends AppCompatActivity {
TextView tvname,tvcontenido;
ImageView imgview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_noticia);
Intent intent = getIntent();
String nombre = intent.getStringExtra("nombre");
String contenido = intent.getStringExtra("contenido");
String extra1 = intent.getStringExtra("extra1");
tvname = (TextView)findViewById(R.id.tvname);
tvcontenido = (TextView)findViewById(R.id.tvcontenido);
imgview = (ImageView)findViewById(R.id.imgview);
tvname.setText(nombre);
tvcontenido.setText(contenido);
imgview.setImageURI(Uri.parse(extra1));
}
}
Но только он показывает мне поля с текстом... Изображение не показывает ее
Чтобы посылать параметры в новую активность, сначала ты будешь должен получать объект ArrayList, так как onItemClick он только возвращает нам положение, и в конце концов посылать информацию в Intent.
Я оставляю тебе пример, сделанный для кода, который ты показал:
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Product selectedProduct = arrayList.get(position);
Intent intent = new Intent(getApplicationContext(), NuevaActivity.class);
intent.putExtra("nombre", selectedProduct.getName());
intent.putExtra("contenido", selectedProduct.getContent());
intent.putExtra("extra1", selectedProduct.getExtra());
startActivity(intent);
}
});
Имей в виду, что функции getName (), getContent (), getExtra () должны существовать в классе Продукт и возвращать соответствующий string.
Как только были посланы данные в Intent, ты будешь должен получать их в NuevaActivity этой формы:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nueva_activity);
Intent intent = getIntent();
String nombre = intent.getStringExtra("nombre");
String contenido = intent.getStringExtra("contenido");
String extra = intent.getStringExtra("extra1");
... Resto de codigo de tu actividad, como los setText correpondientes etc...
}
Ты был бы должен использовать один Intent
чтобы перемещать информацию в новую Активность.
Intent intent = new Intent(this, tuNuevaActivdad.class);
И распределять ему информацию, которую ты хочешь переместить с методом putExtra
:
intent.putExtra("loquequieras", "tuValor");
В конце концов, бросать Intent:
startActivity(intent);
Внутри тебя listView
он остался бы:
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Intent intent = new Intent(this, tuNuevaActivdad.class);
intent.putExtra("loquequieras", "tuValor");
startActivity(intent);
}
});
И после чтобы возвращать данные с твоей Активности tuNuevaActividad
ты был бы должен подбирать intent посредством метода getIntent
и информация посредством метода getStringExtra
так как в этом случае мы переместили один String
.
Intent intent = getIntent();
String tuValor = intent.getStringExtra("loquequieras"); //Recuperas el String "tuValor"
Очень важно:
Значительный string, в этом случае, loquequieras
должен будь быть равен так во время распределения данных как чтобы возвращать их. Ты можешь помещать его String
identificativo, который ты захотел.
Он не является обязательным, что как второй параметр ты переместил его один String
. Ты можешь происходить с ним int
, Char
, Serializable
, и т.д.... Ты можешь видеть все типы информации, которую ты можешь перемещать его здесь. Также ты должен иметь в виду, что, чтобы возвращать данные, также изменится метод в getIntExtra
, getCharExtra
, getSerializableExtra
, и т.д. согласно типу информации, которую ты переместил бы его.
То, что ты желаешь, состоит в том, чтобы посылать переменные между Activities, это осуществляется посредством Intent:
Intent intent = new Intent(this, SegundaActivity.class);
intent.putExtra("VARIABLE1", variable);
intent.putExtra("VARIABLE2", otravariable);
startActivity(intent);
В Activity, которая получает эту стоимость, ты можешь получать их посредством Bundle :
Bundle b = getIntent().getExtras();
String variable_recibida1 = b.getString("VARIABLE1");
String variable_rcibida2 = b.getString("VARIABLE2");
, Чтобы выполнять intent с твоего Activity, pro я происхожу одного botГіn,
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Envía datos!" />
</LinearLayout>
просто добавляет listener в botГіn для того, чтобы realize intent:
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(this, SegundaActivity.class);
intent.putExtra("VARIABLE1", variable);
intent.putExtra("VARIABLE2", otravariable);
startActivity(intent);
}
});