HomeFragment関係を進めました。 #61

Closed r-takeuchi wants to merge 1 commit into nitta-lab-2021:master from nitta-lab-2021:homeFragment
Showing 6 changed files
View
2
■■■
.idea/misc.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
View
6
app/src/main/java/org/ntlab/acanthus_client/entities/AnimationJson.java
//-----------------------------------------------------------------
public AnimationJson() {
}
 
public String getAnimationName(){return this.animationName;}
 
public ArrayList<Editor> getEditor(){return this.editors;}
 
 
 
}
View
17
app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/home/HomeFragment.java
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
 
import org.ntlab.acanthus_client.R;
import org.ntlab.acanthus_client.databinding.FragmentHomeBinding;
import org.ntlab.acanthus_client.entities.Animation;
import org.ntlab.acanthus_client.entities.AnimationJson;
 
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
 
import java.util.Collection;
 
public class HomeFragment extends Fragment {
 
private HomeViewModel homeViewModel;
private FragmentHomeBinding binding;
 
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
homeViewModel =
new ViewModelProvider(this).get(HomeViewModel.class);
 
binding = FragmentHomeBinding.inflate(inflater, container, false);
View root = binding.getRoot();
 
ListView listView = binding.option;
Collection<AnimationJson> animationJsons = null;
BaseAdapter adapter = new ListAnimationViewAdapter(this.getActivity().getApplicationContext(), R.layout.animation_home, animationJsons);
listView.setAdapter(adapter);
 
final TextView textView = binding.textHome;
homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
@Override
});
return root;
}
 
public void onCreateAnimationView(Animation animation){
}
 
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
View
96
app/src/main/java/org/ntlab/acanthus_client/views/main_menu_ui/home/ListAnimationViewAdapter.java 0 → 100644
package org.ntlab.acanthus_client.views.main_menu_ui.home;
 
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 org.ntlab.acanthus_client.R;
import org.ntlab.acanthus_client.entities.Animation;
import org.ntlab.acanthus_client.entities.AnimationJson;
import org.ntlab.acanthus_client.entities.Editor;
 
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.HashSet;
 
public class ListAnimationViewAdapter extends BaseAdapter {
 
static class ViewHolder{
TextView animationName;
TextView editorsName;
TextView LastUpDate;
}
 
private LayoutInflater inflater;
private int itemLayoutId;
private ArrayList<String> titles;
private ArrayList<ArrayList<String>> animationEditors;
 
ListAnimationViewAdapter(Context context, int itemLayoutId,
Collection<AnimationJson> animationJsons) {
super();
int i = 0;
this.inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.itemLayoutId = itemLayoutId;
for(AnimationJson animationJson: animationJsons){
this.titles.add(animationJson.getAnimationName());
ArrayList<String> editors = new ArrayList<>();
for(Editor editor: animationJson.getEditor()){
editors.add(editor.getEditorAccount().getName());
}
animationEditors.add(editors);
}
}
 
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
// 最初だけ View を inflate して、それを再利用する
if (convertView == null) {
// activity_main.xml に list.xml を inflate して convertView とする
convertView = inflater.inflate(itemLayoutId, parent, false);
// ViewHolder を生成
holder = new ViewHolder();
holder.animationName = convertView.findViewById(R.id.animationName);
holder.editorsName = convertView.findViewById(R.id.editorsName);
holder.LastUpDate = convertView.findViewById(R.id.lastUpDate);
convertView.setTag(holder);
}
// holder を使って再利用
else {
holder = (ViewHolder) convertView.getTag();
}
 
// holder の imageView にセット
holder.animationName.setText(titles.get(position));
// 現在の position にあるファイル名リストを holder の textView にセット
for(String ed : animationEditors.get(position)){
holder.editorsName.setText(ed);
 
}
 
return convertView;
}
 
@Override
public int getCount() {
return 0;
}
 
@Override
public Object getItem(int i) {
return null;
}
 
@Override
public long getItemId(int i) {
return 0;
}
 
}
View
39
app/src/main/res/layout/animation_home.xml 0 → 100644
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
 
<TextView
android:id="@+id/animationName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
 
<TextView
android:id="@+id/editorsName"
android:layout_width="47dp"
android:layout_height="30dp"
android:text="TextView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
 
<TextView
android:id="@+id/lastUpDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editorsName" />
 
<TextView
android:id="@+id/space"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/lastUpDate" />
</androidx.constraintlayout.widget.ConstraintLayout>
View
11
app/src/main/res/layout/fragment_home.xml
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="LastUpDate: 00:00:00" />
 
<ListView
android:id="@+id/animationList"
android:layout_width="match_parent"
android:layout_height="match_parent">
 
<ListView
android:id="@+id/option"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</ListView>
 
</LinearLayout>
</ScrollView>
 
<LinearLayout