Skip to content
Snippets Groups Projects
Commit 497a314c authored by Jawn's avatar Jawn
Browse files

Convert Files adapter to recyclerview

parent c6eb61ad
No related branches found
No related tags found
No related merge requests found
package com.commit451.gitlab.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.commit451.gitlab.R;
import com.commit451.gitlab.model.TreeItem;
import java.util.ArrayList;
import java.util.List;
public class FilesAdapter extends BaseAdapter {
private ArrayList<TreeItem> treeItems;
private LayoutInflater inflater;
public FilesAdapter(Context context, List<TreeItem> treeItems) {
this.treeItems = new ArrayList<TreeItem>(treeItems);
if(context != null) {
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
}
@Override
public int getCount() {
return treeItems.size();
}
@Override
public TreeItem getItem(int position) {
return treeItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = inflater.inflate(R.layout.simple_list_item, parent, false);
}
final TextView text = (TextView) convertView.findViewById(R.id.text);
text.setText(treeItems.get(position).getName());
if(treeItems.get(position).getType().equals("tree")) {
text.setCompoundDrawablesWithIntrinsicBounds(convertView.getResources().getDrawable(R.drawable.ic_folder), null, null, null);
}
else if(treeItems.get(position).getType().equals("submodule")) {
text.setCompoundDrawablesWithIntrinsicBounds(convertView.getResources().getDrawable(R.drawable.ic_repo), null, null, null);
}
else {
text.setCompoundDrawablesWithIntrinsicBounds(convertView.getResources().getDrawable(R.drawable.ic_doc), null, null, null);
}
return convertView;
}
}
Loading
Loading
@@ -5,20 +5,19 @@ import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;
 
import com.commit451.gitlab.FileActivity;
import com.commit451.gitlab.R;
import com.commit451.gitlab.adapter.FilesAdapter;
import com.commit451.gitlab.model.TreeItem;
import com.commit451.gitlab.tools.Repository;
import com.commit451.gitlab.tools.RetrofitHelper;
import com.commit451.gitlab.viewHolders.FileViewHolder;
 
import java.util.ArrayList;
import java.util.List;
Loading
Loading
@@ -29,13 +28,13 @@ import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
 
public class FilesFragment extends Fragment implements OnItemClickListener, SwipeRefreshLayout.OnRefreshListener {
public class FilesFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener {
private ArrayList<String> path;
@Bind(R.id.fragmentList) ListView listView;
@Bind(R.id.error_text) TextView errorText;
@Bind(R.id.swipe_layout) SwipeRefreshLayout swipeLayout;
@Bind(R.id.list) RecyclerView list;
public FilesFragment() {}
Loading
Loading
@@ -43,15 +42,17 @@ public class FilesFragment extends Fragment implements OnItemClickListener, Swip
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_files, container, false);
ButterKnife.bind(this, view);
listView.setOnItemClickListener(this);
list.setLayoutManager(new LinearLayoutManager(getActivity()));
 
swipeLayout.setOnRefreshListener(this);
 
path = new ArrayList<String>();
path = new ArrayList<>();
if(Repository.selectedProject != null)
if(Repository.selectedProject != null) {
loadData();
}
return view;
}
Loading
Loading
@@ -63,7 +64,7 @@ public class FilesFragment extends Fragment implements OnItemClickListener, Swip
}
public void loadData() {
path = new ArrayList<String>();
path = new ArrayList<>();
loadFiles();
}
Loading
Loading
@@ -92,11 +93,10 @@ public class FilesFragment extends Fragment implements OnItemClickListener, Swip
@Override
public void success(List<TreeItem> files, Response resp) {
if(swipeLayout != null && swipeLayout.isRefreshing())
swipeLayout.setRefreshing(false);
FilesAdapter filesAdapter = new FilesAdapter(getActivity(), files);
listView.setAdapter(filesAdapter);
if(swipeLayout != null && swipeLayout.isRefreshing()) {
swipeLayout.setRefreshing(false);
}
list.setAdapter(new FilesAdapter(files));
}
@Override
Loading
Loading
@@ -106,13 +106,13 @@ public class FilesFragment extends Fragment implements OnItemClickListener, Swip
if(e.getResponse().getStatus() == 404) {
errorText.setVisibility(View.VISIBLE);
listView.setVisibility(View.GONE);
list.setVisibility(View.GONE);
}
else {
if(path.size() > 0)
if(path.size() > 0) {
path.remove(path.size() - 1);
listView.setAdapter(null);
}
list.setAdapter(null);
if(e.getResponse().getStatus() != 500) {
RetrofitHelper.printDebugInfo(getActivity(), e);
Loading
Loading
@@ -132,24 +132,59 @@ public class FilesFragment extends Fragment implements OnItemClickListener, Swip
return false;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Repository.selectedFile = ((FilesAdapter) listView.getAdapter()).getItem(position);
if(Repository.selectedFile.getType().equals("tree")) {
path.add(Repository.selectedFile.getName() + "/");
loadFiles();
public class FilesAdapter extends RecyclerView.Adapter<FileViewHolder> {
private List<TreeItem> mValues;
public TreeItem getValueAt(int position) {
return mValues.get(position);
}
else if(Repository.selectedFile.getType().equals("blob")) {
String pathExtra = "";
for(String p : path) {
pathExtra += p;
}
Intent i = new Intent(getActivity(), FileActivity.class);
i.putExtra("path", pathExtra);
startActivity(i);
public FilesAdapter(List<TreeItem> items) {
mValues = items;
}
private final View.OnClickListener onProjectClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = (int) v.getTag(R.id.list_position);
Repository.selectedFile = getValueAt(position);
if(Repository.selectedFile.getType().equals("tree")) {
path.add(Repository.selectedFile.getName() + "/");
loadFiles();
}
else if(Repository.selectedFile.getType().equals("blob")) {
String pathExtra = "";
for(String p : path) {
pathExtra += p;
}
Intent i = new Intent(getActivity(), FileActivity.class);
i.putExtra("path", pathExtra);
startActivity(i);
}
}
};
@Override
public FileViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
FileViewHolder holder = FileViewHolder.create(parent);
holder.itemView.setOnClickListener(onProjectClickListener);
return holder;
}
@Override
public void onBindViewHolder(final FileViewHolder holder, int position) {
TreeItem treeItem = getValueAt(position);
holder.bind(treeItem);
holder.itemView.setTag(R.id.list_position, position);
}
@Override
public int getItemCount() {
return mValues.size();
}
}
}
\ No newline at end of file
package com.commit451.gitlab.viewHolders;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.commit451.gitlab.R;
import com.commit451.gitlab.model.TreeItem;
import butterknife.Bind;
import butterknife.ButterKnife;
/**
* Files, yay!
* Created by Jawn on 6/11/2015.
*/
public class FileViewHolder extends RecyclerView.ViewHolder {
public static FileViewHolder create(ViewGroup parent) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_file, parent, false);
return new FileViewHolder(view);
}
@Bind(R.id.file_title) TextView title;
@Bind(R.id.file_image) ImageView image;
public FileViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
public void bind(TreeItem treeItem) {
title.setText(treeItem.getName());
if(treeItem.getType().equals("tree")) {
image.setImageResource(R.drawable.ic_folder);
}
else if(treeItem.getType().equals("submodule")) {
image.setImageResource(R.drawable.ic_repo);
}
else {
image.setImageResource(R.drawable.ic_doc);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<com.commit451.gitlab.views.GitLabSwipeRefreshLayout
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipe_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
 
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.commit451.gitlab.views.GitLabSwipeRefreshLayout
android:id="@+id/swipe_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
 
<ListView
android:id="@+id/fragmentList"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
<TextView
android:id="@+id/error_text"
<android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="@string/files_not_supported"
android:gravity="center"
android:visibility="gone"/>
android:layout_height="match_parent"/>
</com.commit451.gitlab.views.GitLabSwipeRefreshLayout>
 
</RelativeLayout>
<TextView
android:id="@+id/error_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="@string/files_not_supported"
android:gravity="center"
android:layout_gravity="center"
android:visibility="gone"/>
 
</com.commit451.gitlab.views.GitLabSwipeRefreshLayout>
</FrameLayout>
 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground">
<ImageView
android:id="@+id/file_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@null"
android:layout_gravity="center_vertical"/>
<TextView
android:id="@+id/file_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_normal"
android:padding="@dimen/padding_normal"
android:ellipsize="marquee"/>
</LinearLayout>
\ No newline at end of file
Loading
Loading
@@ -8,6 +8,7 @@
<dimen name="actionbarSize">56dp</dimen>
<dimen name="doubleActionbarSize">112dp</dimen>
 
<dimen name="text_size_normal">22sp</dimen>
<dimen name="text_size_large">32sp</dimen>
<dimen name="text_size_huge">42sp</dimen>
</resources>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment