所以我有一个模特Model.
public class Model { .... }
Run Code Online (Sandbox Code Playgroud)
这有两个子类:
public class SubmodelA extend Model { .... }
Run Code Online (Sandbox Code Playgroud)
和
public class SubmodelB extend Model { .... }
Run Code Online (Sandbox Code Playgroud)
这三个都是在Data课堂上包装的.
public class ApiData<T extends Model> {
public T data;
}
Run Code Online (Sandbox Code Playgroud)
我的将军response wrapper看起来像这样:
public class ApiResponse<DATA> {
DATA data;
}
Run Code Online (Sandbox Code Playgroud)
"虚拟"api操作保持不变:
public interface Endpoints {
Call<ApiResponse<ApiData>> getData();
}
Run Code Online (Sandbox Code Playgroud)
我有一个retrofit2.Callback处理响应的实现:
public class ApiCallbackProxy<T> implements retrofit2.Callback<T> {
public interface ApiResultListener<RESPONSE_TYPE> {
void onResult(RESPONSE_TYPE response, ApiError error);
}
private ApiResultListener<T> …Run Code Online (Sandbox Code Playgroud) 我有一个折叠工具栏和嵌套滚动视图的活动FrameLayout,我将片段放在其中.最初,我FragmentA用CardView放入它.
效果很好.当我单击一个按钮时,我将其替换FragmentB为另一个包含RecyclerView的按钮.
当我添加FragmentBI cant滚动到列表的底部.
此视频显示了问题:链接到视频
主机活动布局:
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="340dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:fitsSystemWindows="true">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed|enterAlwaysCollapsed"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="48dp"
app:expandedTitleMarginEnd="64dp">
.........
......
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="fill_vertical"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
>
<!-- the layout which will be the content of the activity (which will be hosted inside the drawer (NOT the list of the drawer)) -->
<FrameLayout
android:id="@+id/frame_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
>
</FrameLayout>
</android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)
FragmentB布局:
<android.support.v4.widget.SwipeRefreshLayout …Run Code Online (Sandbox Code Playgroud) 我有一个带bootstrap-tabs的视图.选项卡是动态生成的.
<%= form_with(:id => 'my-form', model: [:admin, @island], local: true) do |form| %>
<div class="tab-content bg-light" id="tabs-from-locales-content">
<%= available_locales.each_with_index do |locale, i| %>
<div
class="tab-pane fade <%= 'show active' if i == 0 %>"
id="<%= locale.downcase %>"
role="tabpanel"
aria-labelledby="<%= locale.downcase %>-tab">
<%= render partial: 'island_form', locals: {counter: i, locale: locale, f: form} %>
</div>
<% end %>
</div>
...
...
Run Code Online (Sandbox Code Playgroud)
选项卡表示应用程序的每个可用本地化.表单的模型包含两个嵌套属性.这些属性1 to many与模型有关系.因此,用户可以从表单中添加多个这些.他们的字段可以动态生成:
(为简单起见,我只在问题中包含一个.这是部分的_island_form.html.erb一部分.)
<div class="form-group ports-div">
<%= f.label :port %> </br>
<%= f.fields_for :ports do …Run Code Online (Sandbox Code Playgroud) 我有一个使用 redux 从 api 获取数据的功能组件。
const useFetching = (someFetchActionCreator) => {
const dispatch = useDispatch();
useEffect(() => {
dispatch(someFetchActionCreator());
}, [])
}
Run Code Online (Sandbox Code Playgroud)
组件:
export function Trips(props) {
const trips = useSelector(state => state.trips);
useFetching(fetchTrips)
...
...
}
Run Code Online (Sandbox Code Playgroud)
重击声:
export const fetchTrips = () => (dispatch) =>
axios.get("/api/v1/trips")
.then(response => dispatch(addTrips(response.data)))
export const addTrips = trips => ({
type: ADD_TRIPS,
payload: trips
})
Run Code Online (Sandbox Code Playgroud)
减速机:
function tripsReducer(state = INITIAL_STATE, action) {
console.log(action)
if (action.type === ADD_TRIPS) {
return Object.assign({}, state, {
trips: …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个包含多个“分组”复选框的表单,使用react-form-hook Material UI.
这些复选框是从 HTTP 请求异步创建的。
我想提供一组对象 ID 作为默认值:
defaultValues: { boat_ids: trip?.boats.map(boat => boat.id.toString()) || [] }
此外,当我选择或取消选择一个复选框时,我想将对象的ID添加/删除到react-hook-form.
IE。( boat_ids: [25, 29, 4])
我怎样才能做到这一点?
这是我试图重现该问题的示例。
加分点,使用 Yup 验证最小选定复选框
boat_ids: Yup.array() .min(2, "")
我是PHP和Google图表的新手.我想用它来制作谷歌图表与arduino数据存储在MYSL数据库中.到目前为止,我成功地将数据从arduino插入到mysql数据库,但我遇到了谷歌图表的困难.
这是我的PHP代码:
<?php
$mysqli =mysqli_connect('localhost', 'root', '', 'Arduino');
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: ".mysqli_connect_error();
}
$sql = mysqli_query($mysqli, 'SELECT * FROM analoog0');
if (!$sql) {
die("Error running $sql: " . mysql_error());
}
$results = array();
while($row = mysqli_fetch_assoc($sql))
{
$results[] = array(
'Date' => $row['Date'],
'Time' => $row['Time'],
'Temperature' => $row['Temperature']
);
}
$json = json_encode($results, JSON_PRETTY_PRINT);
echo $json;
?>
Run Code Online (Sandbox Code Playgroud)
这是JSON输出:
[ { "Date": "2013-10-24", "Time": "18:15:49", "Temperature": "24" },
{ "Date": "2013-10-24", "Time": "18:16:19", "Temperature": …Run Code Online (Sandbox Code Playgroud) 我想制作一个可以用网格面板内的键盘箭头移动的JButton.关于如何实现这一目标的任何想法?
这是我到目前为止所做的,但它并没有真正起作用
button.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
System.out.println("KEY ^$$#$#$@#$ " + key);
int position = 0;
int previousPosition = 0;
int counter = 0;
position = Integer.parseInt(button.getName());
int nextPosition = position;
if (key == KeyEvent.VK_LEFT) {
nextPosition = nextPosition - 1;
previousPosition = position;
System.out.println("PREVIOUS POSITION: " + position);
bt[1].setVisible(false);
System.out.println("POSITION: " + position);
button.setName("" + nextPosition);
bt[nextPosition].add(button);
}
else if (key == KeyEvent.VK_DOWN) { …Run Code Online (Sandbox Code Playgroud) 我在片段中有一个ListView.当我单击列表上的项目时,我想使用替换"启动"一个新的片段.这是结果.我应该只得到BUTTON:

这是在onItemClick里面:
Fragment nextFrag= new VitaminFragment();
FragmentTransaction transaction = this.getFragmentManager().beginTransaction();
transaction.replace(vitamin_fragment.getId(), nextFrag);
transaction.addToBackStack(null);
transaction.commit();
Run Code Online (Sandbox Code Playgroud)
在VitaminFragment的onCreateView中:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d("created", "vitamin_fragment_2");
return inflater.inflate(R.layout.supplement_properties_layout, container, false);
}
Run Code Online (Sandbox Code Playgroud)
和VitaminFragment XML(supplement_properties_layout)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button2"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="77dp" />
<com.astuetz.PagerSlidingTabStrip
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_alignParentBottom="true"
android:layout_height="48dip" />
<android.support.v4.view.ViewPager
android:id="@+id/supplements_properties_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/tabs" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
以编程方式创建VitaminWiki的布局:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle …Run Code Online (Sandbox Code Playgroud)