Это мое тестовое задание, и я хочу преобразовать его во фрагмент.
Пожалуйста, объясните мне, как преобразовать это действие во фрагмент, который находится внутри вкладки.
Я новичок в разработке приложений для Android, и это сейчас мне недоступно.
Любая помощь или предложение приветствуется.
package in.catking.catking;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
public class test2 extends AppCompatActivity {
String API_KEY = "ABA"; // API owner XYX
String NEWS_SOURCE = "in";
public ListView listNews;
ProgressBar loader;
public ArrayList<HashMap<String, String>> dataList = new ArrayList<HashMap<String, String>>();
static final String KEY_AUTHOR = "author";
static final String KEY_TITLE = "title";
static final String KEY_DESCRIPTION = "description";
static final String KEY_URL = "url";
static final String KEY_URLTOIMAGE = "urlToImage";
static final String KEY_PUBLISHEDAT = "publishedAt";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test2);
listNews = (ListView) findViewById(R.id.listNews);
loader = (ProgressBar) findViewById(R.id.loader);
listNews.setEmptyView(loader);
if(Function.isNetworkAvailable(getApplicationContext()))
{
DownloadNews newsTask = new DownloadNews();
newsTask.execute();
}else{
Toast.makeText(getApplicationContext(), "No Internet Connection", Toast.LENGTH_LONG).show();
}
}
class DownloadNews extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
protected String doInBackground(String... args) {
String xml = "";
String urlParameters = "";//xml = Function.excuteGet("https://newsapi.org/v2/top-headlines?country="+NEWS_SOURCE+"&apiKey="+API_KEY, urlParameters);
xml = Function.excuteGet("https://newsapi.org/v2/top-headlines?country="+NEWS_SOURCE+"&apiKey="+API_KEY, urlParameters);
return xml;
}
@Override
protected void onPostExecute(String xml) {
if(xml.length()>10){ // Just checking if not empty
try {
JSONObject jsonResponse = new JSONObject(xml);
JSONArray jsonArray = jsonResponse.optJSONArray("articles");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
HashMap<String, String> map = new HashMap<String, String>();
map.put(KEY_AUTHOR, jsonObject.optString(KEY_AUTHOR).toString());
map.put(KEY_TITLE, jsonObject.optString(KEY_TITLE).toString());
map.put(KEY_DESCRIPTION, jsonObject.optString(KEY_DESCRIPTION).toString());
map.put(KEY_URL, jsonObject.optString(KEY_URL).toString());
map.put(KEY_URLTOIMAGE, jsonObject.optString(KEY_URLTOIMAGE).toString());
map.put(KEY_PUBLISHEDAT, jsonObject.optString(KEY_PUBLISHEDAT).toString());
dataList.add(map);
}
} catch (JSONException e) {
Toast.makeText(getApplicationContext(), "Unexpected error", Toast.LENGTH_SHORT).show();
}
ListNewsAdapter adapter = new ListNewsAdapter(test2.this, dataList);
listNews.setAdapter(adapter);
listNews.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent i = new Intent(test2.this, DetailsActivity.class);
i.putExtra("url", dataList.get(+position).get(KEY_URL));
startActivity(i);
}
});
}else{
Toast.makeText(getApplicationContext(), "No news found", Toast.LENGTH_SHORT).show();
}
}
}
}
это мой ListNewsAdapter
package in.catking.catking;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.HashMap;
/**
* vvklr
*/
class ListNewsAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
public ListNewsAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ListNewsViewHolder holder = null;
if (convertView == null) {
holder = new ListNewsViewHolder();
convertView = LayoutInflater.from(activity).inflate(
R.layout.list_row, parent, false);
holder.galleryImage = (ImageView) convertView.findViewById(R.id.galleryImage);
holder.author = (TextView) convertView.findViewById(R.id.author);
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.sdetails = (TextView) convertView.findViewById(R.id.sdetails);
holder.time = (TextView) convertView.findViewById(R.id.time);
convertView.setTag(holder);
} else {
holder = (ListNewsViewHolder) convertView.getTag();
}
holder.galleryImage.setId(position);
holder.author.setId(position);
holder.title.setId(position);
holder.sdetails.setId(position);
holder.time.setId(position);
HashMap<String, String> song = new HashMap<String, String>();
song = data.get(position);
try{
holder.author.setText(song.get(test2.KEY_AUTHOR));
holder.title.setText(song.get(test2.KEY_TITLE));
holder.time.setText(song.get(test2.KEY_PUBLISHEDAT));
holder.sdetails.setText(song.get(test2.KEY_DESCRIPTION));
if(song.get(test2.KEY_URLTOIMAGE).toString().length() < 5)
{
holder.galleryImage.setVisibility(View.GONE);
}else{
Picasso.with(activity)
.load(song.get(test2.KEY_URLTOIMAGE).toString())
.resize(300, 200)
.into(holder.galleryImage);
}
}catch(Exception e) {}
return convertView;
}
}
class ListNewsViewHolder {
ImageView galleryImage;
TextView author, title, sdetails, time;
}
Я пытаюсь преобразовать это действие во фрагмент FragmentA, но я не могу это сделать.
Кто-нибудь, пожалуйста, помогите или предложите.